5. Affine Transformation

5.1. Affine Transformation

Affine Transformation (Affine Transformation or Affine Map) is a linear transformation from two-dimensional coordinates (x, y) to two-dimensional coordinates (u, v). Its mathematical expression is as follows:

The corresponding homogeneous coordinate matrix representation is:

Affine transformation maintains the "straightness" (straight lines remain straight lines after affine transformation) and "parallelism" (the relative position relationship between straight lines remains unchanged, parallel lines remain parallel lines after affine transformation, and the position order of points on the straight lines does not change) of two-dimensional graphics. Three pairs of non-collinear corresponding points determine a unique affine transformation.

The rotation and stretching of an image is the image affine transformation. Affine transformation also requires an M matrix. However, since affine transformation is relatively complex, it is generally difficult to find this matrix directly. OpenCV provides an automatic solution to M based on the correspondence between the three points before and after the transformation. This function is

M=cv2.getAffineTransform(pos1,pos2), where the two positions are the corresponding positional relationship before and after the transformation. The output is the affine matrix M. Then use the function cv2.warpAffine().

two methods of image transformation cv2.warpAffine and cv2.warpPerspective

5.2. Actual effect display

Let's take the vertical transformation as an example to see how Python is written:

Code path:

/home/pi/project_demo/06.Open_source_cv_fundamentals_course/B.Geometric_Transformations/05_Affine_Transformation.ipynb