Vision often requires transformations of quantities represented by vectors. The transformations might be: rotations, translations, scalings, or conversion into different representations altogether.
One method of applying linear transformations is to multiply the vector containing the quantity to be transformed by a transformation matrix.
If the 2D vector to be transformed is:
and the 2D transformation matrix is:
then the transformed vector is:
A transformation that scales 2D vectors by 2 in the horizontal direction and by 3 in the vertical direction is:
Multiplying vector above by this matrix gives you , as you can easily verify.
The 2D transformation that rotates 2D vector by an anti-clockwise (counterclockwise) angle is given by the matrix:
Thus, the rotated vector is:
Figure 2a) shows an example of the rotation of point to point by angle .
Figure 2: a) Anticlockwise rotation of point by angle .
b) Translation of point by a vector .
In more generality, the transformation of an M-dimensional vector:
by matrix is the N-dimensional vector whose component is given by:
Another transformation is the translation of a point position specified by a vector. If the point position is given by and the translation vector is , then the transformed position is given by . Figure 2b shows an example of a translation of point to point by vector
Scaling, rotation and translation can be combined in one operation. Suppose that we have a line shape defined its two endpoints and , and we wish to rotate it by angle , scale it uniformly by and translate it by , so that point is afterwards at point . The combined transformation on any point lying between and is given by:
In fact, this transformation can be applied to any point defined in the same coordinate system as and .
The above specific transformations can be generalized to higher dimensions without much difficulty, except in the case of rotations. Translation is defined simply using a vector of the appropriate dimension. Scaling still uses a diagonal matrix (or can be simplified by replacing the scaling matrix by a scalar if the scaling is the same in all dimensions), but now also of the appropriate dimension. Rotation in 3D requires the use of three angles, and leads to a matrix. There are a variety of ways to specify the three angles and we will not discuss them further here.
Homogeneous coordinates are often used for implementing general projective transformations, including scaling, rotation and translation simultaneously, but this is a more advanced topic and is not discussed here.
We have defined these transformations as generally multiplying a column vector on the right by a matrix on its left. Some texts use row ( i.e. horizontal) vectors and matrix multiply with the row vector on the left and the matrix on the right. There is no fundamental difference to this alternative notation: the geometry described is the same, only the notation is different. Some texts also use positive angles to denote clockwise rotations. The 2D rotation matrix then has the position of the ``--'' sign switched to the other term. There is again no fundamental difference to this, only a difference in notation.