|
eLynx SDK
v3.3.0 C++ image processing API reference |
Class implementing 2D linear transformation. More...
#include <LinearTransformation.h>
Public Member Functions | |
| LinearTransformation () | |
| Constructor, creates identity transformation. | |
| LinearTransformation (const LinearTransformation &c) | |
| Copy constructor. | |
| LinearTransformation & | operator= (const LinearTransformation &c) |
| An assignement operator. | |
| virtual boost::shared_ptr < AbstractTransformation > | Clone () const |
| Creates and returns copy of this object. | |
| double | GetValue (uint32 iRow, uint32 iCol) const |
| Returns specified value of the transformation matrix. | |
| void | SetValue (uint32 iRow, uint32 iCol, double iValue) |
| Sets specified value of the transformation matrix. | |
| LinearTransformation & | NullTransformation () |
| Sets transformation to null transformation and returns this object. | |
| LinearTransformation & | Identity () |
| Sets transformation to identity and returns this object. | |
| virtual bool | IsIdentity () const |
| Returns true, if actual transformation is identity. | |
| LinearTransformation & | Translation (double iDX, double iDY) |
| Sets transformation to translation and returns this object. | |
| LinearTransformation & | Rotation (double iAngle) |
| Sets transformation to rotation and returns this object. | |
| LinearTransformation & | Scale (double iSX, double iSY) |
| Sets transformation to scaling and returns this object. | |
| LinearTransformation & | GeneralTransformation (double iA, double iB, double iC, double iD, double iE, double iF) |
| Sets transformation to general linear transformation: x' = A*x+B*y+C y' = D*x+E*y+F and returns this object. | |
| LinearTransformation & | Multiply (const LinearTransformation &iTrf) |
| Multiplies current matrix with given matrix, storing the result in current object and returning it (behaves like *= operator). | |
| LinearTransformation & | Inverse (const LinearTransformation &iTrf) |
| Sets transformation to inverse of specified transformation. | |
| virtual void | Transform (double iX, double iY, double &oX, double &oY) const |
| Abstract method, which transforms position of the pixel in the coordinate space of the first image, into position in the coordinate space of the second image. | |
| virtual void | GetTransformedBBox (uint32 iWidth, uint32 iHeight, double &oLeft, double &oTop, double &oWidth, double &oHeight) const |
| Abstract method, which computes bounding box of the transformed (second) image in the coordinate space of the first image. | |
| virtual void | InverseTransform (double iX, double iY, double &oX, double &oY) const |
| Abstract method, which transforms position of the pixel in the coordinate space of the second image, into position in the coordinate space of the first image. | |
| virtual void | GetInverseBBox (uint32 iWidth, uint32 iHeight, double &oLeft, double &oTop, double &oWidth, double &oHeight) const |
| Abstract method, which computes bounding box of the original (first) image in the coordinate space of the second image. | |
Class implementing 2D linear transformation.
Transformation is (as usual) represented by 3x3 matrix. Class provides methods to set typical transformations like translation, rotation or scaling. Also, it provides a method to combine transformations by matrix multiplication.
| eLynx::Math::LinearTransformation::LinearTransformation | ( | const LinearTransformation & | c ) |
Copy constructor.
| c | the object to be copied |
| virtual boost::shared_ptr<AbstractTransformation> eLynx::Math::LinearTransformation::Clone | ( | ) | const [virtual] |
Creates and returns copy of this object.
Implements eLynx::Math::AbstractTransformation.
| LinearTransformation& eLynx::Math::LinearTransformation::GeneralTransformation | ( | double | iA, |
| double | iB, | ||
| double | iC, | ||
| double | iD, | ||
| double | iE, | ||
| double | iF | ||
| ) |
Sets transformation to general linear transformation: x' = A*x+B*y+C y' = D*x+E*y+F and returns this object.
| iA | the (0,0) matrix coefficient |
| iB | the (1,0) matrix coefficient |
| iC | the (2,0) matrix coefficient |
| iD | the (0,1) matrix coefficient |
| iE | the (1,1) matrix coefficient |
| iF | the (2,1) matrix coefficient |
| virtual void eLynx::Math::LinearTransformation::GetInverseBBox | ( | uint32 | iWidth, |
| uint32 | iHeight, | ||
| double & | oLeft, | ||
| double & | oTop, | ||
| double & | oWidth, | ||
| double & | oHeight | ||
| ) | const [virtual] |
Abstract method, which computes bounding box of the original (first) image in the coordinate space of the second image.
Second image has a bounding box (0, 0)-(iWidth, iHeight). First image has a bounding box (oLeft, oTop)-(oLeft+oWidth, oTop+oHeight).
| iWidth | the width of the second image |
| iHeight | the height of the second image |
| oLeft | the left coordinate of the first image bounding box |
| oTop | the top coordinate of the first image bounding box |
| oWidth | the width of the first image bounding box |
| oHeight | the height of the first image bounding box |
Implements eLynx::Math::AbstractTransformation.
| virtual void eLynx::Math::LinearTransformation::GetTransformedBBox | ( | uint32 | iWidth, |
| uint32 | iHeight, | ||
| double & | oLeft, | ||
| double & | oTop, | ||
| double & | oWidth, | ||
| double & | oHeight | ||
| ) | const [virtual] |
Abstract method, which computes bounding box of the transformed (second) image in the coordinate space of the first image.
First image has a bounding box (0, 0)-(iWidth, iHeight). Second image has a bounding box (oLeft, oTop)-(oLeft+oWidth, oTop+oHeight).
| iWidth | the width of the first image |
| iHeight | the height of the first image |
| oLeft | the left coordinate of the second image bounding box |
| oTop | the top coordinate of the second image bounding box |
| oWidth | the width of the second image bounding box |
| oHeight | the height of the second image bounding box |
Implements eLynx::Math::AbstractTransformation.
| double eLynx::Math::LinearTransformation::GetValue | ( | uint32 | iRow, |
| uint32 | iCol | ||
| ) | const |
Returns specified value of the transformation matrix.
| iRow | the number of row (0..2) |
| iCol | the number of column (0..2) |
| LinearTransformation& eLynx::Math::LinearTransformation::Identity | ( | ) |
Sets transformation to identity and returns this object.
Identity transforms all vectors to themselves.
| LinearTransformation& eLynx::Math::LinearTransformation::Inverse | ( | const LinearTransformation & | iTrf ) |
Sets transformation to inverse of specified transformation.
The transformation must be invertible - this means determinant of transformation matrix must be non-zero. If it is not, the exception is raised.
| iTrf | the matrix to be inverted |
| virtual void eLynx::Math::LinearTransformation::InverseTransform | ( | double | iX, |
| double | iY, | ||
| double & | oX, | ||
| double & | oY | ||
| ) | const [virtual] |
Abstract method, which transforms position of the pixel in the coordinate space of the second image, into position in the coordinate space of the first image.
| iX | the x coordinate of the pixel on the second image |
| iY | the y coordinate of the pixel on the second image |
| oX | the x position on the first image |
| oY | the y position on the first image |
Implements eLynx::Math::AbstractTransformation.
| virtual bool eLynx::Math::LinearTransformation::IsIdentity | ( | ) | const [virtual] |
Returns true, if actual transformation is identity.
Can be used to speed up the process (by not transforming at all).
Implements eLynx::Math::AbstractTransformation.
| LinearTransformation& eLynx::Math::LinearTransformation::Multiply | ( | const LinearTransformation & | iTrf ) |
Multiplies current matrix with given matrix, storing the result in current object and returning it (behaves like *= operator).
The matrix multiplication is equivalent to adding transformations.
| iTrf | the matrix current matrix should be multiplied with |
| LinearTransformation& eLynx::Math::LinearTransformation::NullTransformation | ( | ) |
Sets transformation to null transformation and returns this object.
Null transformation transforms all vectors to null vector.
| LinearTransformation& eLynx::Math::LinearTransformation::operator= | ( | const LinearTransformation & | c ) |
An assignement operator.
| c | the object to be copied |
| LinearTransformation& eLynx::Math::LinearTransformation::Rotation | ( | double | iAngle ) |
Sets transformation to rotation and returns this object.
The rotation is performed around origin [0,0], counter-clockwise for positive angle.
| iAngle | the angle in radians. |
| LinearTransformation& eLynx::Math::LinearTransformation::Scale | ( | double | iSX, |
| double | iSY | ||
| ) |
Sets transformation to scaling and returns this object.
The scaling is performed with respect to origin [0, 0].
| iSX | the scale factor in x direction |
| iSY | the scale factor in y direction |
| void eLynx::Math::LinearTransformation::SetValue | ( | uint32 | iRow, |
| uint32 | iCol, | ||
| double | iValue | ||
| ) |
Sets specified value of the transformation matrix.
| iRow | the number of row (0..2) |
| iCol | the number of column (0..2) |
| iValue | the value to be set |
| virtual void eLynx::Math::LinearTransformation::Transform | ( | double | iX, |
| double | iY, | ||
| double & | oX, | ||
| double & | oY | ||
| ) | const [virtual] |
Abstract method, which transforms position of the pixel in the coordinate space of the first image, into position in the coordinate space of the second image.
| iX | the x coordinate of the pixel on the first image |
| iY | the y coordinate of the pixel on the first image |
| oX | the x position on the second image |
| oY | the y position on the second image |
Implements eLynx::Math::AbstractTransformation.
| LinearTransformation& eLynx::Math::LinearTransformation::Translation | ( | double | iDX, |
| double | iDY | ||
| ) |
Sets transformation to translation and returns this object.
| iDX | the delta value in x direction |
| iDY | the delta value in y direction |