class cv::MatExpr
Overview
Matrix expression representation. Moreā¦
#include <mat.hpp> class MatExpr { public: // fields Mat a; double alpha; Mat b; double beta; Mat c; int flags; const MatOp* op; Scalar s; // construction MatExpr(); MatExpr(const Mat& m); MatExpr( const MatOp* _op, int _flags, const Mat& _a = Mat(), const Mat& _b = Mat(), const Mat& _c = Mat(), double _alpha = 1, double _beta = 1, const Scalar& _s = Scalar() ); // methods MatExpr operator+( const Mat& a, const Mat& b ); MatExpr operator+( const Mat& a, const Scalar& s ); MatExpr operator+( const Scalar& s, const Mat& a ); MatExpr operator+( const MatExpr& e, const Mat& m ); MatExpr operator+( const Mat& m, const MatExpr& e ); MatExpr operator+( const MatExpr& e, const Scalar& s ); MatExpr operator+( const Scalar& s, const MatExpr& e ); MatExpr operator+( const MatExpr& e1, const MatExpr& e2 ); MatExpr operator-( const Mat& a, const Mat& b ); MatExpr operator-( const Mat& a, const Scalar& s ); MatExpr operator-( const Scalar& s, const Mat& a ); MatExpr operator-( const MatExpr& e, const Mat& m ); MatExpr operator-( const Mat& m, const MatExpr& e ); MatExpr operator-( const MatExpr& e, const Scalar& s ); MatExpr operator-( const Scalar& s, const MatExpr& e ); MatExpr operator-( const MatExpr& e1, const MatExpr& e2 ); MatExpr operator-(const Mat& m); MatExpr operator-(const MatExpr& e); MatExpr operator*( const Mat& a, const Mat& b ); MatExpr operator*( const Mat& a, double s ); MatExpr operator*( double s, const Mat& a ); MatExpr operator*( const MatExpr& e, const Mat& m ); MatExpr operator*( const Mat& m, const MatExpr& e ); MatExpr operator*( const MatExpr& e, double s ); MatExpr operator*( double s, const MatExpr& e ); MatExpr operator*( const MatExpr& e1, const MatExpr& e2 ); MatExpr operator/( const Mat& a, const Mat& b ); MatExpr operator/( const Mat& a, double s ); MatExpr operator/( double s, const Mat& a ); MatExpr operator/( const MatExpr& e, const Mat& m ); MatExpr operator/( const Mat& m, const MatExpr& e ); MatExpr operator/( const MatExpr& e, double s ); MatExpr operator/( double s, const MatExpr& e ); MatExpr operator/( const MatExpr& e1, const MatExpr& e2 ); MatExpr operator<( const Mat& a, const Mat& b ); MatExpr operator<( const Mat& a, double s ); MatExpr operator<( double s, const Mat& a ); MatExpr operator<=( const Mat& a, const Mat& b ); MatExpr operator<=( const Mat& a, double s ); MatExpr operator<=( double s, const Mat& a ); MatExpr operator==( const Mat& a, const Mat& b ); MatExpr operator==( const Mat& a, double s ); MatExpr operator==( double s, const Mat& a ); MatExpr operator!=( const Mat& a, const Mat& b ); MatExpr operator!=( const Mat& a, double s ); MatExpr operator!=( double s, const Mat& a ); MatExpr operator>=( const Mat& a, const Mat& b ); MatExpr operator>=( const Mat& a, double s ); MatExpr operator>=( double s, const Mat& a ); MatExpr operator>( const Mat& a, const Mat& b ); MatExpr operator>( const Mat& a, double s ); MatExpr operator>( double s, const Mat& a ); MatExpr operator&( const Mat& a, const Mat& b ); MatExpr operator&( const Mat& a, const Scalar& s ); MatExpr operator&( const Scalar& s, const Mat& a ); MatExpr operator|( const Mat& a, const Mat& b ); MatExpr operator|( const Mat& a, const Scalar& s ); MatExpr operator|( const Scalar& s, const Mat& a ); MatExpr operator^( const Mat& a, const Mat& b ); MatExpr operator^( const Mat& a, const Scalar& s ); MatExpr operator^( const Scalar& s, const Mat& a ); MatExpr operator~(const Mat& m); MatExpr min( const Mat& a, const Mat& b ); MatExpr min( const Mat& a, double s ); MatExpr min( double s, const Mat& a ); MatExpr max( const Mat& a, const Mat& b ); MatExpr max( const Mat& a, double s ); MatExpr max( double s, const Mat& a ); MatExpr abs(const Mat& m); MatExpr abs(const MatExpr& e); MatExpr col(int x) const; Mat cross(const Mat& m) const; MatExpr diag(int d = 0) const; double dot(const Mat& m) const; MatExpr inv(int method = DECOMP_LU) const; MatExpr mul( const MatExpr& e, double scale = 1 ) const; MatExpr mul( const Mat& m, double scale = 1 ) const; operator Mat() const; template <typename _Tp> operator Mat_< _Tp >() const; MatExpr operator()( const Range& rowRange, const Range& colRange ) const; MatExpr operator()(const Rect& roi) const; MatExpr row(int y) const; Size size() const; MatExpr t() const; int type() const; };
Detailed Documentation
Matrix expression representation.
This is a list of implemented matrix operations that can be combined in arbitrary complex expressions (here A, B stand for matrices (Mat), s for a scalar ( Scalar ), alpha for a real-valued scalar ( double )):
Addition, subtraction, negation:
A+B
,A-B
,A+s
,A-s
,s+A
,s-A
,-A
Scaling:
A*alpha
Per-element multiplication and division:
A.mul(B)
,A/B
,alpha/A
Matrix multiplication:
A*B
Transposition:
A.t()
(means A T)Matrix inversion and pseudo-inversion, solving linear systems and least-squares problems:
A.inv([method]) (~ A<sup>-1</sup>)
,A.inv([method])*B (~ X: AX=B)
Comparison:
A cmpop B
,A cmpop alpha
,alpha cmpop A
, where cmpop is one of>
,>=
,==
,!=
,<=
,<
. The result of comparison is an 8-bit single channel mask whose elements are set to 255 (if the particular element or pair of elements satisfy the condition) or 0.Bitwise logical operations:
A logicop B
,A logicop s
,s logicop A
,~A
, where logicop is one of&
,|
,^
.Element-wise minimum and maximum:
min(A, B)
,min(A, alpha)
,max(A, B)
,max(A, alpha)
Element-wise absolute value:
abs(A)
Cross-product, dot-product:
A.cross(B)
,A.dot(B)
Any function of matrix or matrices and scalars that returns a matrix or a scalar, such as norm, mean, sum, countNonZero, trace, determinant, repeat, and others.
Matrix initializers (Mat::eye(), Mat::zeros(), Mat::ones()), matrix comma-separated initializers, matrix constructors and operators that extract sub-matrices (see Mat description).
Mat_<destination_type>() constructors to cast the result to the proper type. Comma-separated initializers and probably some other operations may require additional explicit Mat() or Mat_<T>() constructor calls to resolve a possible ambiguity.
Here are examples of matrix expressions:
// compute pseudo-inverse of A, equivalent to A.inv(DECOMP_SVD) SVD svd(A); Mat pinvA = svd.vt.t()*Mat::diag(1./svd.w)*svd.u.t(); // compute the new vector of parameters in the Levenberg-Marquardt algorithm x -= (A.t()*A + lambda*Mat::eye(A.cols,A.cols,A.type())).inv(DECOMP_CHOLESKY)*(A.t()*err); // sharpen image using "unsharp mask" algorithm Mat blurred; double sigma = 1, threshold = 5, amount = 1; GaussianBlur(img, blurred, Size(), sigma, sigma); Mat lowContrastMask = abs(img - blurred) < threshold; Mat sharpened = img*(1+amount) + blurred*(-amount); img.copyTo(sharpened, lowContrastMask);
Methods
MatExpr abs(const Mat& m)
Calculates an absolute value of each matrix element.
abs is a meta-function that is expanded to one of absdiff or convertScaleAbs forms:
- C = abs(A-B) is equivalent to
absdiff(A, B, C)
- C = abs(A) is equivalent to
absdiff(A, Scalar::all(0), C)
- C =
Mat_<Vec<uchar,n> >(abs(A*alpha + beta))
is equivalent toconvertScaleAbs(A, C, alpha, beta)
The output matrix has the same size and the same type as the input one except for the last case, where C is depth=CV_8U .
Parameters:
m | matrix. |
See also:
MatrixExpressions, absdiff, convertScaleAbs
MatExpr abs(const MatExpr& e)
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Parameters:
e | matrix expression. |