Image Component Library (ICL)
Namespaces | Classes | Typedefs | Enumerations | Functions | Variables
icl::math Namespace Reference

Namespaces

 fft
 

Classes

struct  DynColVector
 Extension class for the DynMatrix<T> template, that restricts the the matrix column count to 'one'. More...
 
struct  DynMatrix
 Highly flexible and optimized matrix class implementation. More...
 
struct  DynRowVector
 
class  FFTException
 Special exception implementation for the FFT package. More...
 
struct  FixedColVector
 
class  FixedMatrix
 Powerful and highly flexible matrix class implementation. More...
 
struct  FixedMatrixBase
 FixedMatrix base struct defining datamode enum. More...
 
class  FixedMatrixPart
 Utility struct for FixedMatrix sub-parts. More...
 
struct  FixedRowVector
 
struct  GenericHomography2D
 Utility structure that represents a 2D homography (implemented for float and double) More...
 
class  GraphCutter
 class for graph cut algorithms on undirected graphs (a graph is represented by an adjacency matrix). More...
 
struct  IncompatibleMatrixDimensionException
 Special linear algebra exception type . More...
 
struct  InvalidIndexException
 Special linear algebra exception type . More...
 
struct  InvalidMatrixDimensionException
 Special linear algebra exception type . More...
 
class  KDTree
 Simple KD-Tree implementation. More...
 
class  KMeans
 Generic Implementation of the K-Means algorithm. More...
 
class  LeastSquareModelFitting
 Direct Least Square Fitting Algorithm. More...
 
class  LeastSquareModelFitting2D
 Direct Least Square Fitting specialization for 2D input data. More...
 
class  LevenbergMarquardtFitter
 Utility class implementing the multidimensional Levenberg Marquardt Algorithm for non-linear Optimization. More...
 
struct  LinearTransform1D
 A standard linear mapping class for the 1D case f(x) = m * x + b. More...
 
class  LLM
 Local Linear Map implementation (LLM) More...
 
class  MatrixSubRectIterator
 Iterator class used to iterate through a sub rect of 2D data. More...
 
class  Octree
 Generic Octree Implementation. More...
 
class  PolynomialRegression
 Generic Implementation of the Polynomial Regression algorithm. More...
 
class  Projective4PointTransform
 Utility class that provides functions to perspectively map 4 points of a source frame into 4 points of a destination frame. More...
 
class  QuadTree
 Generic QuadTree Implementation. More...
 
class  RansacFitter
 Generic RANSAC (RAndom SAmpling Consensus) Implementation. More...
 
struct  SimplexOptimizationResult
 Utility structure, that is used as accumulator for results of the SimplexOptimizer class. More...
 
class  SimplexOptimizer
 Template based implementation for the Downhill Simplex Optimiztation method. More...
 
struct  SingularMatrixException
 Special linear algebra exception type . More...
 
class  SOM
 Generic implementation of D to K dim Self Organizing Map (SOM) More...
 
class  SOM2D
 Simple Wrapper class of the generic SOM Implementation for 2D SOMs. More...
 
class  StochasticOptimizer
 The StochasticOptimizer is a tiny frame-work for simple stochastic optimization processes. More...
 
struct  StochasticOptimizerResult
 Utility structure for the stochastic optimizer class. More...
 
struct  StraightLine2D
 A straight line is parameterized in offset/direction form. More...
 

Typedefs

typedef FixedColVector< icl32f, 3 > Vec3
 another shortcut for 3D vectors More...
 
typedef FixedColVector< icl32f, 4 > Vec4
 another shortcut for 3D vectors More...
 
typedef FixedMatrix< icl32f, 3, 3 > Mat3
 typedef for 3x3 fixed matrices More...
 
typedef FixedMatrix< icl32f, 4, 4 > Mat4
 typedef for 4x4 fixed matrices More...
 
typedef GenericHomography2D< float > Homography2D
 default homography 2D type definition (usually float depth is enough) More...
 
typedef std::complex< double > xcomplex
 
typedef double xreal
 

Enumerations

enum  AXES {
  sxyz, sxyx, sxzy, sxzx,
  syzx, syzy, syxz, syxy,
  szxy, szxz, szyx, szyz,
  rzyx, rxyx, ryzx, rxzx,
  rxzy, ryzy, rzxy, ryxy,
  ryxz, rzxz, rxyz, rzyz
}
 axes order specifications for euler angles More...
 

Functions

template<class T >
ICLMath_IMP std::ostream & operator<< (std::ostream &s, const DynMatrix< T > &m)
 ostream operator implemented for uchar, short, int, float and double matrices More...
 
template<class T >
ICLMath_IMP std::istream & operator>> (std::istream &s, DynMatrix< T > &m)
 istream operator implemented for uchar, short, int, float and double matrices More...
 
template<class T >
DynMatrix< T > operator, (const DynMatrix< T > &left, const DynMatrix< T > &right)
 vertical concatenation of matrices More...
 
template<class T >
DynMatrix< T > operator% (const DynMatrix< T > &top, const DynMatrix< T > &bottom)
 horizontal concatenation of matrices More...
 
template<class T , class Init >
DynMatrix< T > & matrix_init (DynMatrix< T > &m, Init init)
 Matrix initialization template. More...
 
template<class T >
ICLMath_IMP DynMatrix< T > & matrix_abs (DynMatrix< T > &m)
 element-wise absolute value (inplace) [IPP-optimized] More...
 
template<class T >
ICLMath_IMP DynMatrix< T > & matrix_abs (const DynMatrix< T > &m, DynMatrix< T > &dst)
 element-wise absolute value [IPP-optimized] More...
 
template<class T >
ICLMath_IMP DynMatrix< T > & matrix_log (DynMatrix< T > &m)
 element-wise logarith (basis E) (inplace) [IPP-optimized] More...
 
template<class T >
ICLMath_IMP DynMatrix< T > & matrix_log (const DynMatrix< T > &m, DynMatrix< T > &dst)
 element-wise logarith (basis E) [IPP-optimized] More...
 
template<class T >
ICLMath_IMP DynMatrix< T > & matrix_exp (DynMatrix< T > &m)
 element-wise exp-function (inplace) [IPP-optimized] More...
 
template<class T >
ICLMath_IMP DynMatrix< T > & matrix_exp (const DynMatrix< T > &m, DynMatrix< T > &dst)
 element-wise exp-function [IPP-optimized] More...
 
template<class T >
ICLMath_IMP DynMatrix< T > & matrix_sqrt (DynMatrix< T > &m)
 element-wise square-root-function (inplace) [IPP-optimized] More...
 
template<class T >
ICLMath_IMP DynMatrix< T > & matrix_sqrt (const DynMatrix< T > &m, DynMatrix< T > &dst)
 element-wise square-root-function [IPP-optimized] More...
 
template<class T >
ICLMath_IMP DynMatrix< T > & matrix_sqr (DynMatrix< T > &m)
 element-wise square-function (x*x) (inplace) [IPP-optimized] More...
 
template<class T >
ICLMath_IMP DynMatrix< T > & matrix_sqr (const DynMatrix< T > &m, DynMatrix< T > &dst)
 element-wise square-function (x*x) [IPP-optimized] More...
 
template<class T >
ICLMath_IMP DynMatrix< T > & matrix_sin (DynMatrix< T > &m)
 element-wise sinus-function (x*x) (inplace) More...
 
template<class T >
ICLMath_IMP DynMatrix< T > & matrix_sin (const DynMatrix< T > &m, DynMatrix< T > &dst)
 element-wise sinus-function (x*x) More...
 
template<class T >
ICLMath_IMP DynMatrix< T > & matrix_cos (DynMatrix< T > &m)
 element-wise cosinus-function (inplace) More...
 
template<class T >
ICLMath_IMP DynMatrix< T > & matrix_cos (const DynMatrix< T > &m, DynMatrix< T > &dst)
 element-wise cosinus-function More...
 
template<class T >
ICLMath_IMP DynMatrix< T > & matrix_tan (DynMatrix< T > &m)
 element-wise tangent-function (inplace) More...
 
template<class T >
ICLMath_IMP DynMatrix< T > & matrix_tan (const DynMatrix< T > &m, DynMatrix< T > &dst)
 element-wise tangent-function More...
 
template<class T >
ICLMath_IMP DynMatrix< T > & matrix_arcsin (DynMatrix< T > &m)
 element-wise arcus sinus-function (inplace) More...
 
template<class T >
ICLMath_IMP DynMatrix< T > & matrix_arcsin (const DynMatrix< T > &m, DynMatrix< T > &dst)
 element-wise arcus sinus-function More...
 
template<class T >
ICLMath_IMP DynMatrix< T > & matrix_arccos (DynMatrix< T > &m)
 element-wise arcus cosinus-function (inplace) More...
 
template<class T >
ICLMath_IMP DynMatrix< T > & matrix_arccos (const DynMatrix< T > &m, DynMatrix< T > &dst)
 element-wise arcus cosinus-function More...
 
template<class T >
ICLMath_IMP DynMatrix< T > & matrix_arctan (DynMatrix< T > &m)
 element-wise arcus tangent-function (inplace) More...
 
template<class T >
ICLMath_IMP DynMatrix< T > & matrix_arctan (const DynMatrix< T > &m, DynMatrix< T > &dst)
 element-wise arcus tangent-function More...
 
template<class T >
ICLMath_IMP DynMatrix< T > & matrix_reciprocal (DynMatrix< T > &m)
 element-wise reciprocal-function (1/x) (inplace) More...
 
template<class T >
ICLMath_IMP DynMatrix< T > & matrix_reciprocal (const DynMatrix< T > &m, DynMatrix< T > &dst)
 element-wise reciprocal-function (1/x) More...
 
template<class T >
ICLMath_IMP DynMatrix< T > & matrix_powc (DynMatrix< T > &m, T exponent)
 element-wise power-function (x^exponent) (inplace) More...
 
template<class T >
ICLMath_IMP DynMatrix< T > & matrix_powc (const DynMatrix< T > &m, T exponent, DynMatrix< T > &dst)
 element-wise power-function (x^exponent) More...
 
template<class T >
ICLMath_IMP DynMatrix< T > & matrix_addc (DynMatrix< T > &m, T val)
 element-wise addition of constant value (inplace) [IPP-optimized] More...
 
template<class T >
ICLMath_IMP DynMatrix< T > & matrix_addc (const DynMatrix< T > &m, T val, DynMatrix< T > &dst)
 element-wise addition of constant value [IPP-optimized] More...
 
template<class T >
ICLMath_IMP DynMatrix< T > & matrix_subc (DynMatrix< T > &m, T val)
 element-wise substraction of constant value (inplace) [IPP-optimized] More...
 
template<class T >
ICLMath_IMP DynMatrix< T > & matrix_subc (const DynMatrix< T > &m, T val, DynMatrix< T > &dst)
 element-wise substraction of constant value [IPP-optimized] More...
 
template<class T >
ICLMath_IMP DynMatrix< T > & matrix_divc (DynMatrix< T > &m, T val)
 element-wise division by constant value (inplace) [IPP-optimized] More...
 
template<class T >
ICLMath_IMP DynMatrix< T > & matrix_divc (const DynMatrix< T > &m, T val, DynMatrix< T > &dst)
 element-wise division by constant value [IPP-optimized] More...
 
template<class T >
ICLMath_IMP DynMatrix< T > & matrix_mulc (DynMatrix< T > &m, T val)
 element-wise multiplication with constant value (inplace) [IPP-optimized] More...
 
template<class T >
ICLMath_IMP DynMatrix< T > & matrix_mulc (const DynMatrix< T > &m, T val, DynMatrix< T > &dst)
 element-wise multiplication with constant value [IPP-optimized] More...
 
template<class T >
ICLMath_IMP DynMatrix< T > & matrix_arctan2 (const DynMatrix< T > &my, const DynMatrix< T > &mx, DynMatrix< T > &dst)
 element-wise atan2 function atan2(y,x) More...
 
template<class T >
ICLMath_IMP DynMatrix< T > & matrix_add (const DynMatrix< T > &m1, const DynMatrix< T > &m2, DynMatrix< T > &dst)
 element-wise addition [IPP-optimized] More...
 
template<class T >
ICLMath_IMP DynMatrix< T > & matrix_sub (const DynMatrix< T > &m1, const DynMatrix< T > &m2, DynMatrix< T > &dst)
 element-wise substraction [IPP-optimized] More...
 
template<class T >
ICLMath_IMP DynMatrix< T > & matrix_mul (const DynMatrix< T > &m1, const DynMatrix< T > &m2, DynMatrix< T > &dst)
 element-wise multiplication [IPP-optimized] More...
 
template<class T >
ICLMath_IMP DynMatrix< T > & matrix_div (const DynMatrix< T > &m1, const DynMatrix< T > &m2, DynMatrix< T > &dst)
 element-wise division [IPP-optimized] More...
 
template<class T >
ICLMath_IMP DynMatrix< T > & matrix_pow (const DynMatrix< T > &m1, const DynMatrix< T > &m2, DynMatrix< T > &dst)
 element-wise power More...
 
template<class T >
ICLMath_IMP void svd_dyn (const DynMatrix< T > &A, DynMatrix< T > &U, DynMatrix< T > &S, DynMatrix< T > &V)
 SVD function - decomposes A into USV' (only icl32f and icl64f) More...
 
template<class T , unsigned int WIDTH, unsigned int HEIGHT, unsigned int HEIGHT2>
FixedMatrix< T, WIDTH, HEIGHT+HEIGHT2 > operator% (const FixedMatrix< T, WIDTH, HEIGHT > &a, const FixedMatrix< T, WIDTH, HEIGHT2 > &b)
 Vertical Matrix concatenation. More...
 
template<class T , unsigned int WIDTH, unsigned int HEIGHT, unsigned int WIDTH2>
FixedMatrix< T, WIDTH+WIDTH2, HEIGHT > operator, (const FixedMatrix< T, WIDTH, HEIGHT > &a, const FixedMatrix< T, WIDTH2, HEIGHT > &b)
 Horizontal Matrix concatenation. More...
 
template<class T , unsigned int M_ROWS_AND_COLS, unsigned int V_COLS>
FixedMatrix< T, V_COLS, M_ROWS_AND_COLS > & operator *= (FixedMatrix< T, V_COLS, M_ROWS_AND_COLS > &v, const FixedMatrix< T, M_ROWS_AND_COLS, M_ROWS_AND_COLS > &m)
 Matrix multiplication (inplace) More...
 
template<class T , unsigned int COLS, unsigned int ROWS>
std::ostream & operator<< (std::ostream &s, const FixedMatrix< T, COLS, ROWS > &m)
 put the matrix into a std::ostream (human readable) More...
 
template<class T , unsigned int COLS, unsigned int ROWS>
std::istream & operator>> (std::istream &s, FixedMatrix< T, COLS, ROWS > &m)
 read matrix from std::istream (human readable) More...
 
template<class T >
ICLMath_IMP FixedMatrix< T, 2, 2 > create_rot_2D (T angle)
 creates a 2D rotation matrix (defined for float and double) More...
 
template<class T >
ICLMath_IMP FixedMatrix< T, 3, 3 > create_hom_3x3 (T angle, T dx=0, T dy=0, T v0=0, T v1=0)
 creates a 2D homogen matrix (defined for float and double) More...
 
template<class T >
FixedMatrix< T, 3, 3 > create_hom_3x3_trans (T dx, T dy)
 creates a 2D homogen matrix with translation part only (defined for float and double) More...
 
template<class T >
ICLMath_IMP FixedMatrix< T, 3, 3 > create_rot_3D (T axisX, T axisY, T axisZ, T angle)
 create 3D rotation matrix from rotation axis and angle (defined for float and double only) More...
 
template<class T >
ICLMath_IMP FixedMatrix< T, 3, 3 > create_rot_3D (T ai, T aj, T ak, AXES axes=AXES_DEFAULT)
 create 3D rotation matrix from euler angles in specified axes order (defined for float and double only) More...
 
template<class T >
ICLMath_IMP FixedMatrix< T, 4, 4 > create_hom_4x4 (T rx, T ry, T rz, T dx=0, T dy=0, T dz=0, T v0=0, T v1=0, T v2=0, AXES axes=AXES_DEFAULT)
 creates a 3D homogeneous matrix (defined for float and double) More...
 
template<class T >
ICLMath_IMP FixedMatrix< T, 4, 4 > create_rot_4x4 (T axisX, T axisY, T axisZ, T angle)
 create 4D homogeneous matrix that rotates about given axis by given angle (defined for float and double only) More...
 
template<class T >
FixedMatrix< T, 4, 4 > create_hom_4x4_trans (T dx, T dy, T dz)
 creates 4D homogeneous matrix with translation part only (defined for float and double) More...
 
template<class T >
ICLMath_IMP FixedMatrix< T, 1, 3 > extract_euler_angles (const FixedMatrix< T, 3, 3 > &m, AXES axes=AXES_DEFAULT)
 compute euler angles for rotation matrix assuming specified axes order More...
 
template<class T >
ICLMath_IMP FixedMatrix< T, 1, 3 > extract_euler_angles (const FixedMatrix< T, 4, 4 > &m, AXES axes=AXES_DEFAULT)
 
 OPTIMIZED_MATRIX_MULTIPLICATION (2, 2, 2, float, 32f)
 
 OPTIMIZED_MATRIX_MULTIPLICATION (3, 3, 3, float, 32f)
 
 OPTIMIZED_MATRIX_MULTIPLICATION (4, 4, 4, float, 32f)
 
 OPTIMIZED_MATRIX_MULTIPLICATION (2, 2, 2, double, 64f)
 
 OPTIMIZED_MATRIX_MULTIPLICATION (3, 3, 3, double, 64f)
 
 OPTIMIZED_MATRIX_MULTIPLICATION (4, 4, 4, double, 64f)
 
template<class T >
linear_interpolate (const T &a, const T &b, float x)
 linearly interpolates between a, b (x must be in range [0,1]) More...
 
ICLMath_API float dist_point_linesegment (const Vec4 &p, const Vec4 &lineStart, const Vec4 &lineEnd, Vec4 *nearestPoint=0)
 distance from point p to line segment (lineStart -> lineEnd) More...
 
ICLMath_API float dist_point_triangle (const Vec4 &p, const Vec4 &a, const Vec4 &b, const Vec4 &c, Vec4 *nearestPoint=0)
 distance from point p to triangle (a - b - c) More...
 
Vec4 bilinear_interpolate (const Vec4 corners[4], float x, float y)
 bilinear vector interpolation More...
 
template<class T >
math::FixedColVector< T, 4 > normalize (const math::FixedMatrix< T, 1, 4 > &v)
 normalize a vector to length 1 More...
 
template<class T >
math::FixedColVector< T, 4 > normalize3 (const math::FixedMatrix< T, 1, 4 > &v, const double &h=1)
 normalize a vector to length 1 More...
 
float sprod3 (const Vec3 &a, const Vec3 &b)
 3D scalar (aka dot-) product for 4D homogeneous vectors (ignoring the homegeneous component) More...
 
template<class T >
FixedMatrix< T, 3, 3 > gramSchmidtOrtho (FixedMatrix< T, 3, 3 > const &mat)
 
float sprod3 (const Vec4 &a, const Vec4 &b)
 3D scalar (aka dot-) product for 4D homogeneous vectors (ignoring the homegeneous component) More...
 
float sqrnorm3 (const Vec4 &a)
 sqared norm for 4D homogeneous vectors (ignoring the homegeneous component) More...
 
float norm3 (const Vec4 &a)
 3D- euclidian norm for 4D homogeneous vectors (ignoring the homegeneous component) More...
 
float dist3 (const Vec4 &a, const Vec4 &b)
 3d euclidian distance More...
 
template<class T >
math::FixedColVector< T, 4 > homogenize (const math::FixedMatrix< T, 1, 4 > &v)
 homogenize a vector by normalizing 4th component to 1 More...
 
template<class T >
math::FixedColVector< T, 4 > project (math::FixedMatrix< T, 1, 4 > v, T z)
 perform perspective projection More...
 
template<class T >
math::FixedColVector< T, 4 > cross (const math::FixedMatrix< T, 1, 4 > &v1, const math::FixedMatrix< T, 1, 4 > &v2)
 homogeneous 3D cross-product More...
 
template<class T >
math::FixedColVector< T, 3 > cross (const math::FixedMatrix< T, 1, 3 > &v1, const math::FixedMatrix< T, 1, 3 > &v2)
 
Vec4 rotate_vector (const Vec4 &axis, float angle, const Vec4 &vec)
 rotates a vector around a given axis More...
 
template<class ForwardIterator >
float euclidian (ForwardIterator v1Begin, ForwardIterator v1End, ForwardIterator v2Begin)
 Calculate the euclidian distance of two vectors v1 and v2. More...
 
template<class T >
float euclidian (const std::vector< T > &a, const std::vector< T > &b)
 Calculate the euclidian distance of points a and b. More...
 
template<class ForwardIterator >
double mean (ForwardIterator begin, ForwardIterator end)
 computes the mean value of a data range More...
 
template<class ForwardIterator >
double variance (ForwardIterator begin, ForwardIterator end, double mean, bool empiricMean=true)
 Compute the variance of a given data range with given mean value. More...
 
template<class ForwardIterator >
double variance (ForwardIterator begin, ForwardIterator end)
 Compute the variance of a given data range. More...
 
template<class ForwardIterator >
double stdDeviation (ForwardIterator begin, ForwardIterator end, double mean, bool empiricMean=true)
 Compute std-deviation of a data set with given mean (calls sqrt(variance(..)) More...
 
template<class ForwardIterator >
double stdDeviation (ForwardIterator begin, ForwardIterator end)
 Compute std-deviation of a data set. More...
 
template<class ForwardIterator >
std::pair< double, double > meanAndStdDev (ForwardIterator begin, ForwardIterator end)
 Calculates mean and standard deviation of given data range simultanously. More...
 
static xreal xnorm (xcomplex z)
 
static xreal xabs (xcomplex z)
 
static xreal xroot (xreal x, int n)
 
static int xlogb (xcomplex z)
 
static void xscalbln (xcomplex *z, int e)
 
static xcomplex cauchy (const int deg, xcomplex *P)
 
static void scale (const int deg, xcomplex *P)
 
static void noshft (const int l1, int deg, xcomplex *P, xcomplex *H)
 
static xcomplex polyev (const int deg, const xcomplex s, const xcomplex *Q, xcomplex *q)
 
static xcomplex calct (bool *bol, int deg, xcomplex Ps, xcomplex *H, xcomplex *h, xcomplex s)
 
static void nexth (const bool bol, int deg, xcomplex t, xcomplex *H, xcomplex *h, xcomplex *p)
 
static xreal errev (const int deg, const xcomplex *p, const xreal ms, const xreal mp)
 
static bool vrshft (const int l3, int deg, xcomplex *P, xcomplex *p, xcomplex *H, xcomplex *h, xcomplex *zero, xcomplex *s)
 
static bool fxshft (const int l2, int deg, xcomplex *P, xcomplex *p, xcomplex *H, xcomplex *h, xcomplex *zero, xcomplex *s)
 
int cpoly (int degree, const xcomplex poly[], xcomplex Roots[])
 
int solve_poly (int degree, const double *in_real, const double *in_imag, double *out_real, double *out_imag)
 

Variables

ICLMath_API const AXES AXES_DEFAULT
 
struct {
   double   icl::math::ZERO
 
   double   icl::math::INFIN
 
   int   icl::math::MIN_EXP
 
   int   icl::math::MAX_EXP
 
xdata = { 0.0, DBL_MAX, DBL_MIN_EXP, DBL_MAX_EXP }
 

matrix distance measurement

template<class T >
ICLMath_IMPmatrix_distance (const DynMatrix< T > &m1, const DynMatrix< T > &m2, T norm=2)
 computes norm between matrix vectors More...
 
template<class T >
ICLMath_IMPmatrix_divergence (const DynMatrix< T > &m1, const DynMatrix< T > &m2)
 computes generalized Kullback-Leibler-divergence between matrix vectors More...
 

statistical functions

template<class T >
ICLMath_IMPmatrix_min (const DynMatrix< T > &m, int *x=0, int *y=0)
 find minimum element of matrix (optionally find location too) [IPP-optimized] More...
 
template<class T >
ICLMath_IMPmatrix_max (const DynMatrix< T > &m, int *x=0, int *y=0)
 find maximum element of matrix (optionally find location too) [IPP-optimized] More...
 
template<class T >
ICLMath_IMP void matrix_minmax (const DynMatrix< T > &m, T dst[2], int *minx=0, int *miny=0, int *maxx=0, int *maxy=0)
 find min- and maxinim element at once (optionally with locations) [IPP-optimized] More...
 
template<class T >
ICLMath_IMPmatrix_mean (const DynMatrix< T > &m)
 calculate matrix mean value [IPP-optimized] More...
 
template<class T >
ICLMath_IMPmatrix_var (const DynMatrix< T > &m)
 calculate matrix variance [IPP-optimized] More...
 
template<class T >
ICLMath_IMPmatrix_var (const DynMatrix< T > &m, T mean, bool empiricalMean=true)
 calculate matrix variance with given mean More...
 
template<class T >
ICLMath_IMP void matrix_meanvar (const DynMatrix< T > &m, T *mean, T *var)
 computes matrix mean and variance at once [IPP-optimized] More...
 
template<class T >
ICLMath_IMPmatrix_stddev (const DynMatrix< T > &m)
 computes matrix standard deviation (sqrt(var)) [IPP-optimized] More...
 
template<class T >
ICLMath_IMPmatrix_stddev (const DynMatrix< T > &m, T mean, bool empiricalMean=true)
 calculate matrix standard deviation with given mean More...
 

other functions ...

template<class T >
ICLMath_IMP DynMatrix< T > & matrix_muladd (const DynMatrix< T > &a, T alpha, const DynMatrix< T > &b, T beta, T gamma, DynMatrix< T > &dst)
 computes alpha*a + beta*b + gamma More...
 
template<class T >
ICLMath_IMP DynMatrix< T > & matrix_muladd (const DynMatrix< T > &a, T alpha, T gamma, DynMatrix< T > &dst)
 computes alpha*a + gamma More...
 
template<class T >
ICLMath_IMP DynMatrix< T > & matrix_mask (const DynMatrix< unsigned char > &mask, DynMatrix< T > &m)
 applies masking operation (m(i,j) is set to 0 if mask(i,j) is 0) (inplace) More...
 
template<class T >
ICLMath_IMP DynMatrix< T > & matrix_mask (const DynMatrix< unsigned char > &mask, const DynMatrix< T > &m, DynMatrix< T > &dst)
 applies masking operation (m(i,j) is set to 0 if mask(i,j) is 0) More...
 

special functions for transposed matrices ...

enum  transposedDef { NONE_T =0, SRC1_T =1<<0, SRC2_T =1<<1, BOTH_T =SRC1_T | SRC2_T }
 special utility type for definition of transposed states for matrices More...
 
template<class T >
ICLMath_IMP DynMatrix< T > & matrix_mult_t (const DynMatrix< T > &src1, const DynMatrix< T > &src2, DynMatrix< T > &dst, int transpDef)
 applies matrix mutliplication on optionally transposed matrices More...
 
template<class T >
ICLMath_IMP DynMatrix< T > & big_matrix_mult_t (const DynMatrix< T > &src1, const DynMatrix< T > &src2, DynMatrix< T > &dst, int transpDef)
 applies matrix mutliplication on optionally transposed matrices (specialized for big matrices) More...
 
template<class T >
ICLMath_IMP DynMatrix< T > & matrix_add_t (const DynMatrix< T > &src1, const DynMatrix< T > &src2, DynMatrix< T > &dst, int transpDef)
 applies matrix addition on optionally transposed matrices More...
 
template<class T >
ICLMath_IMP DynMatrix< T > & matrix_sub_t (const DynMatrix< T > &src1, const DynMatrix< T > &src2, DynMatrix< T > &dst, int transpDef)
 applies matrix substraction on optionally transposed matrices More...
 

Typedef Documentation

◆ Homography2D

default homography 2D type definition (usually float depth is enough)

◆ Mat3

typedef for 3x3 fixed matrices

◆ Mat4

typedef for 4x4 fixed matrices

◆ Vec3

another shortcut for 3D vectors

◆ Vec4

another shortcut for 3D vectors

◆ xcomplex

typedef std::complex<double> icl::math::xcomplex

◆ xreal

typedef double icl::math::xreal

Enumeration Type Documentation

◆ AXES

axes order specifications for euler angles

Enumerator
sxyz 
sxyx 
sxzy 
sxzx 
syzx 
syzy 
syxz 
syxy 
szxy 
szxz 
szyx 
szyz 
rzyx 
rxyx 
ryzx 
rxzx 
rxzy 
ryzy 
rzxy 
ryxy 
ryxz 
rzxz 
rxyz 
rzyz 

Function Documentation

◆ bilinear_interpolate()

Vec4 icl::math::bilinear_interpolate ( const Vec4  corners[4],
float  x,
float  y 
)
inline

bilinear vector interpolation

corner order ul, ur, ll, lr 0 --— 1 | | | --> x | 2 ---—3 \/ y

◆ calct()

static xcomplex icl::math::calct ( bool *  bol,
int  deg,
xcomplex  Ps,
xcomplex H,
xcomplex h,
xcomplex  s 
)
static

◆ cauchy()

static xcomplex icl::math::cauchy ( const int  deg,
xcomplex P 
)
static

◆ cpoly()

int icl::math::cpoly ( int  degree,
const xcomplex  poly[],
xcomplex  Roots[] 
)

◆ create_hom_3x3()

template<class T >
ICLMath_IMP FixedMatrix<T, 3, 3> icl::math::create_hom_3x3 ( angle,
dx = 0,
dy = 0,
v0 = 0,
v1 = 0 
)

creates a 2D homogen matrix (defined for float and double)

◆ create_hom_3x3_trans()

template<class T >
FixedMatrix<T, 3, 3> icl::math::create_hom_3x3_trans ( dx,
dy 
)
inline

creates a 2D homogen matrix with translation part only (defined for float and double)

◆ create_hom_4x4()

template<class T >
ICLMath_IMP FixedMatrix<T,4,4> icl::math::create_hom_4x4 ( rx,
ry,
rz,
dx = 0,
dy = 0,
dz = 0,
v0 = 0,
v1 = 0,
v2 = 0,
AXES  axes = AXES_DEFAULT 
)

creates a 3D homogeneous matrix (defined for float and double)

◆ create_hom_4x4_trans()

template<class T >
FixedMatrix<T, 4, 4> icl::math::create_hom_4x4_trans ( dx,
dy,
dz 
)
inline

creates 4D homogeneous matrix with translation part only (defined for float and double)

◆ create_rot_2D()

template<class T >
ICLMath_IMP FixedMatrix<T, 2, 2> icl::math::create_rot_2D ( angle)

creates a 2D rotation matrix (defined for float and double)

◆ create_rot_3D() [1/2]

template<class T >
ICLMath_IMP FixedMatrix<T, 3, 3> icl::math::create_rot_3D ( axisX,
axisY,
axisZ,
angle 
)

create 3D rotation matrix from rotation axis and angle (defined for float and double only)

◆ create_rot_3D() [2/2]

template<class T >
ICLMath_IMP FixedMatrix<T,3,3> icl::math::create_rot_3D ( ai,
aj,
ak,
AXES  axes = AXES_DEFAULT 
)

create 3D rotation matrix from euler angles in specified axes order (defined for float and double only)

◆ create_rot_4x4()

template<class T >
ICLMath_IMP FixedMatrix<T, 4, 4> icl::math::create_rot_4x4 ( axisX,
axisY,
axisZ,
angle 
)

create 4D homogeneous matrix that rotates about given axis by given angle (defined for float and double only)

◆ cross() [1/2]

template<class T >
math::FixedColVector<T,4> icl::math::cross ( const math::FixedMatrix< T, 1, 4 > &  v1,
const math::FixedMatrix< T, 1, 4 > &  v2 
)
inline

homogeneous 3D cross-product

◆ cross() [2/2]

template<class T >
math::FixedColVector<T,3> icl::math::cross ( const math::FixedMatrix< T, 1, 3 > &  v1,
const math::FixedMatrix< T, 1, 3 > &  v2 
)
inline

◆ dist3()

float icl::math::dist3 ( const Vec4 a,
const Vec4 b 
)
inline

3d euclidian distance

◆ dist_point_linesegment()

ICLMath_API float icl::math::dist_point_linesegment ( const Vec4 p,
const Vec4 lineStart,
const Vec4 lineEnd,
Vec4 nearestPoint = 0 
)

distance from point p to line segment (lineStart -> lineEnd)

The implementation is based on the code of http://www.geometrictools.com which is povided under the terms of the "Boost Software License 1.0" (http://www.boost.org/LICENSE_1_0.txt)

◆ dist_point_triangle()

ICLMath_API float icl::math::dist_point_triangle ( const Vec4 p,
const Vec4 a,
const Vec4 b,
const Vec4 c,
Vec4 nearestPoint = 0 
)

distance from point p to triangle (a - b - c)

The implementation is based on the code of http://www.geometrictools.com which is povided under the terms of the "Boost Software License 1.0" (http://www.boost.org/LICENSE_1_0.txt)

◆ errev()

static xreal icl::math::errev ( const int  deg,
const xcomplex p,
const xreal  ms,
const xreal  mp 
)
static

◆ euclidian() [1/2]

template<class ForwardIterator >
float icl::math::euclidian ( ForwardIterator  v1Begin,
ForwardIterator  v1End,
ForwardIterator  v2Begin 
)
inline

Calculate the euclidian distance of two vectors v1 and v2.

Parameters
v1Beginfirst element of v1
v1Endend of v1 (points the first element behind v1)
v2Beginfirst element of v2
Returns
The euclidian distance |v1-v2|

◆ euclidian() [2/2]

template<class T >
float icl::math::euclidian ( const std::vector< T > &  a,
const std::vector< T > &  b 
)
inline

Calculate the euclidian distance of points a and b.

Parameters
aThe first point
bThe second point
Returns
The distance of point a and b

◆ extract_euler_angles() [1/2]

template<class T >
ICLMath_IMP FixedMatrix<T,1,3> icl::math::extract_euler_angles ( const FixedMatrix< T, 3, 3 > &  m,
AXES  axes = AXES_DEFAULT 
)

compute euler angles for rotation matrix assuming specified axes order

◆ extract_euler_angles() [2/2]

template<class T >
ICLMath_IMP FixedMatrix<T,1,3> icl::math::extract_euler_angles ( const FixedMatrix< T, 4, 4 > &  m,
AXES  axes = AXES_DEFAULT 
)

◆ fxshft()

static bool icl::math::fxshft ( const int  l2,
int  deg,
xcomplex P,
xcomplex p,
xcomplex H,
xcomplex h,
xcomplex zero,
xcomplex s 
)
static

◆ gramSchmidtOrtho()

template<class T >
FixedMatrix<T,3,3> icl::math::gramSchmidtOrtho ( FixedMatrix< T, 3, 3 > const &  mat)
inline

◆ homogenize()

template<class T >
math::FixedColVector<T,4> icl::math::homogenize ( const math::FixedMatrix< T, 1, 4 > &  v)
inline

homogenize a vector by normalizing 4th component to 1

◆ linear_interpolate()

template<class T >
T icl::math::linear_interpolate ( const T &  a,
const T &  b,
float  x 
)

linearly interpolates between a, b (x must be in range [0,1])

if x is 0, a is returned and if x is 1, b is returned

◆ matrix_powc()

template<class T >
ICLMath_IMP DynMatrix<T>& icl::math::matrix_powc ( const DynMatrix< T > &  m,
exponent,
DynMatrix< T > &  dst 
)

element-wise power-function (x^exponent)

For float and double only

◆ mean()

template<class ForwardIterator >
double icl::math::mean ( ForwardIterator  begin,
ForwardIterator  end 
)
inline

computes the mean value of a data range

Parameters
beginstart iterator
endend iterator IPP-optimized for float and double

◆ meanAndStdDev()

template<class ForwardIterator >
std::pair<double,double> icl::math::meanAndStdDev ( ForwardIterator  begin,
ForwardIterator  end 
)
inline

Calculates mean and standard deviation of given data range simultanously.

Parameters
beginstart iterator
endend iterator
Returns
pair p with p.first = mean and p.second = stdDev

◆ nexth()

static void icl::math::nexth ( const bool  bol,
int  deg,
xcomplex  t,
xcomplex H,
xcomplex h,
xcomplex p 
)
static

◆ norm3()

float icl::math::norm3 ( const Vec4 a)
inline

3D- euclidian norm for 4D homogeneous vectors (ignoring the homegeneous component)

◆ normalize()

template<class T >
math::FixedColVector<T,4> icl::math::normalize ( const math::FixedMatrix< T, 1, 4 > &  v)
inline

normalize a vector to length 1

◆ normalize3()

template<class T >
math::FixedColVector<T,4> icl::math::normalize3 ( const math::FixedMatrix< T, 1, 4 > &  v,
const double &  h = 1 
)
inline

normalize a vector to length 1

◆ noshft()

static void icl::math::noshft ( const int  l1,
int  deg,
xcomplex P,
xcomplex H 
)
static

◆ operator *=()

template<class T , unsigned int M_ROWS_AND_COLS, unsigned int V_COLS>
FixedMatrix<T,V_COLS,M_ROWS_AND_COLS>& icl::math::operator *= ( FixedMatrix< T, V_COLS, M_ROWS_AND_COLS > &  v,
const FixedMatrix< T, M_ROWS_AND_COLS, M_ROWS_AND_COLS > &  m 
)
inline

Matrix multiplication (inplace)

inplace matrix multiplication does only work for squared source and destination matrices of identical size

◆ operator%()

template<class T >
DynMatrix<T> icl::math::operator% ( const DynMatrix< T > &  top,
const DynMatrix< T > &  bottom 
)
inline

horizontal concatenation of matrices

missing elementes are padded with 0

◆ operator,()

template<class T >
DynMatrix<T> icl::math::operator, ( const DynMatrix< T > &  left,
const DynMatrix< T > &  right 
)
inline

vertical concatenation of matrices

missing elementes are padded with 0

◆ operator<<()

template<class T , unsigned int COLS, unsigned int ROWS>
std::ostream& icl::math::operator<< ( std::ostream &  s,
const FixedMatrix< T, COLS, ROWS > &  m 
)
inline

put the matrix into a std::ostream (human readable)

Internally, this function wraps a DynMatrix<T> shallowly around m

◆ operator>>()

template<class T , unsigned int COLS, unsigned int ROWS>
std::istream& icl::math::operator>> ( std::istream &  s,
FixedMatrix< T, COLS, ROWS > &  m 
)
inline

read matrix from std::istream (human readable)

Internally, this function wraps a DynMatrix<T> shallowly around m

◆ OPTIMIZED_MATRIX_MULTIPLICATION() [1/6]

icl::math::OPTIMIZED_MATRIX_MULTIPLICATION ( ,
,
,
float  ,
32f   
)

◆ OPTIMIZED_MATRIX_MULTIPLICATION() [2/6]

icl::math::OPTIMIZED_MATRIX_MULTIPLICATION ( ,
,
,
float  ,
32f   
)

◆ OPTIMIZED_MATRIX_MULTIPLICATION() [3/6]

icl::math::OPTIMIZED_MATRIX_MULTIPLICATION ( ,
,
,
float  ,
32f   
)

◆ OPTIMIZED_MATRIX_MULTIPLICATION() [4/6]

icl::math::OPTIMIZED_MATRIX_MULTIPLICATION ( ,
,
,
double  ,
64f   
)

◆ OPTIMIZED_MATRIX_MULTIPLICATION() [5/6]

icl::math::OPTIMIZED_MATRIX_MULTIPLICATION ( ,
,
,
double  ,
64f   
)

◆ OPTIMIZED_MATRIX_MULTIPLICATION() [6/6]

icl::math::OPTIMIZED_MATRIX_MULTIPLICATION ( ,
,
,
double  ,
64f   
)

◆ polyev()

static xcomplex icl::math::polyev ( const int  deg,
const xcomplex  s,
const xcomplex Q,
xcomplex q 
)
static

◆ project()

template<class T >
math::FixedColVector<T,4> icl::math::project ( math::FixedMatrix< T, 1, 4 >  v,
z 
)
inline

perform perspective projection

◆ rotate_vector()

Vec4 icl::math::rotate_vector ( const Vec4 axis,
float  angle,
const Vec4 vec 
)
inline

rotates a vector around a given axis

◆ scale()

static void icl::math::scale ( const int  deg,
xcomplex P 
)
static

◆ solve_poly()

int icl::math::solve_poly ( int  degree,
const double *  in_real,
const double *  in_imag,
double *  out_real,
double *  out_imag 
)

◆ sprod3() [1/2]

float icl::math::sprod3 ( const Vec3 a,
const Vec3 b 
)
inline

3D scalar (aka dot-) product for 4D homogeneous vectors (ignoring the homegeneous component)

◆ sprod3() [2/2]

float icl::math::sprod3 ( const Vec4 a,
const Vec4 b 
)
inline

3D scalar (aka dot-) product for 4D homogeneous vectors (ignoring the homegeneous component)

◆ sqrnorm3()

float icl::math::sqrnorm3 ( const Vec4 a)
inline

sqared norm for 4D homogeneous vectors (ignoring the homegeneous component)

◆ stdDeviation() [1/2]

template<class ForwardIterator >
double icl::math::stdDeviation ( ForwardIterator  begin,
ForwardIterator  end,
double  mean,
bool  empiricMean = true 
)
inline

Compute std-deviation of a data set with given mean (calls sqrt(variance(..))

Parameters
beginstart iterator
endend iterator
meangiven mean value
empiricMeanif true, sum of square distances is devidec by n-1 else by n

◆ stdDeviation() [2/2]

template<class ForwardIterator >
double icl::math::stdDeviation ( ForwardIterator  begin,
ForwardIterator  end 
)
inline

Compute std-deviation of a data set.

Parameters
beginstart iterator
endend iterator

◆ svd_dyn()

template<class T >
ICLMath_IMP void icl::math::svd_dyn ( const DynMatrix< T > &  A,
DynMatrix< T > &  U,
DynMatrix< T > &  S,
DynMatrix< T > &  V 
)

SVD function - decomposes A into USV' (only icl32f and icl64f)

Internaly, this function will always use double values. Other types are converted internally.

Parameters
Ato decomposed matrix
Uis filled column-wise with the eigenvectors of AA'
Sis filled with the singular values of A (s is ColumnVector and not diagonal matrix)
Vis filled column-wise with the eigenvectors of A'A (in V, V is stored not V')

◆ variance() [1/2]

template<class ForwardIterator >
double icl::math::variance ( ForwardIterator  begin,
ForwardIterator  end,
double  mean,
bool  empiricMean = true 
)
inline

Compute the variance of a given data range with given mean value.

Parameters
beginstart iterator
endend iterator
meanmean value of the range
empiricMeanif true, sum of square distances is devidec by n-1 else by n

◆ variance() [2/2]

template<class ForwardIterator >
double icl::math::variance ( ForwardIterator  begin,
ForwardIterator  end 
)
inline

Compute the variance of a given data range.

Parameters
beginstart ForwardIterator
endend ForwardIterator

◆ vrshft()

static bool icl::math::vrshft ( const int  l3,
int  deg,
xcomplex P,
xcomplex p,
xcomplex H,
xcomplex h,
xcomplex zero,
xcomplex s 
)
static

◆ xabs()

static xreal icl::math::xabs ( xcomplex  z)
static

◆ xlogb()

static int icl::math::xlogb ( xcomplex  z)
static

◆ xnorm()

static xreal icl::math::xnorm ( xcomplex  z)
static

◆ xroot()

static xreal icl::math::xroot ( xreal  x,
int  n 
)
static

◆ xscalbln()

static void icl::math::xscalbln ( xcomplex z,
int  e 
)
static

Variable Documentation

◆ AXES_DEFAULT

ICLMath_API const AXES icl::math::AXES_DEFAULT

◆ INFIN

double icl::math::INFIN

◆ MAX_EXP

int icl::math::MAX_EXP

◆ MIN_EXP

int icl::math::MIN_EXP

◆ xdata

const { ... } icl::math::xdata

◆ ZERO

double icl::math::ZERO