Classes | |
struct | RotBase |
Base structure for walkers. More... | |
struct | Rotation_0 |
No rotation: x->, y->. More... | |
struct | Rotation_1_T |
Rotated 90deg\. More... | |
struct | Rotation_2 |
Rotated 180deg\. More... | |
struct | Rotation_3_T |
Rotated 270deg\. More... | |
struct | Rotation_0_T |
No rotation, transposed: y->, x->. More... | |
struct | Rotation_1 |
Rotated 90deg\. More... | |
struct | Rotation_2_T |
Rotated 180deg\. More... | |
struct | Rotation_3 |
Rotated 270deg\. More... | |
struct | Rotation |
Performs manipulations with rotation codes 0-7 (dihedral group of order eight). More... | |
struct | Checked |
Checked_ iterator for a rectangle in a matrix, no rotation. More... | |
struct | CheckedImage |
Checked_ iterator for a whole QImage; no rotation, but always transposed. More... | |
struct | OperatorBase |
A convenience base type for operators to use with walkOperate(). More... | |
struct | RDSummer |
An operator computing the sum of products. More... | |
struct | AddMulCopy |
An operator performing a= (b+toAdd)*toMul. More... | |
struct | MulAddCopyChecked |
An operator performing a= b*toMul+toAdd and moving the result into [min,max] bounds. More... | |
struct | SumWalker |
Walker that iterates over rectangles in a matrix and returns their sums, to be constructed by makeSumWalker. More... | |
struct | HalfShrinkerMul |
Similar to HalfShrinker, but instead of multiplying the sums with 0.25 it uses an arbitrary number. More... | |
struct | AddMulCopyTo2nd |
Transformer performing an affine function. More... | |
struct | Assigner |
A simple assigning operator - assigns its second argument into the first one. More... | |
struct | SignChanger |
Transformer performing sign change. More... | |
struct | ReverseAssigner |
A simple assigning operator - assigns its second argument into the first one. More... | |
struct | HalfShrinker |
Matrix iterator performing a 2x2 to 1 shrink. More... | |
struct | HorizShrinker |
Matrix iterator performing a 3x3 to 1x2 shrink. More... | |
struct | VertShrinker |
Matrix iterator performing a 3x3 to 2x1 shrink. More... | |
struct | DiamShrinker |
Matrix iterator performing a shrink of a diamond (rotated sub-square) into a square, decreasing the area of used pixels to 50%. More... | |
Functions | |
template<class Checked , class Unchecked , class Operator > | |
Operator | walkOperate (Checked checked, Unchecked unchecked, Operator oper) |
Iterates two matrix iterators and performs an action. | |
template<class Check , class U , class Operator > | |
Operator | walkOperateCheckRotate (Check checked, Operator oper, MatrixSlice< U > pixels2, const Block &block2, char rotation) |
A flavour of walkOperate() choosing the right Rotation_* iterator based on rotation and constructing it from pixels2 and block2 . | |
template<class T , class I > | |
Checked< T, I > | makeLinearizer (T *start, I inCount, I outCount) |
Creates a Checked structure to walk a linear array as a matrix. | |
template<class SumT , class PixT , class I > | |
SumWalker< SumT, PixT, I > | makeSumWalker (const SummedMatrix< SumT, PixT, I > &matrix, I x0, I y0, I inLevel, I outLevel) |
Constructs a square SumWalker on matrix starting on [x0 ,y0 ], iterating over squares of level (inLevel- and covering a square of level outLevel . |
Operator MatrixWalkers::walkOperate | ( | Checked | checked, | |
Unchecked | unchecked, | |||
Operator | oper | |||
) | [inline] |
Iterates two matrix iterators and performs an action.
The loop is controled by the first iterator (checked
) and on every corresponding pair (a,b) oper(a,b)
is invoked. Returns oper
.
Definition at line 252 of file matrixUtil.h.
References MatrixWalkers::RotBase< T, I >::get(), MatrixWalkers::Checked< T, I >::innerCond(), MatrixWalkers::RotBase< T, I >::innerInit(), MatrixWalkers::Rotation_0< T, I >::innerStep(), MatrixWalkers::Checked< T, I >::outerCond(), MatrixWalkers::Checked< T, I >::outerStep(), and walkOperate().
Referenced by MStdDomains::shrinkHorizontally(), MStdDomains::shrinkToDiamond(), MStdDomains::shrinkToHalf(), MStdDomains::shrinkVertically(), walkOperate(), and walkOperateCheckRotate().