矩阵变换
1. 仿射变换
仿射变换(Affine Transformation)是一种二维平面几何变换,它保持了平行线的性质,但不一定保持长度和角度。仿射变换可以由以下几种基本变换组合得到:平移、缩放、旋转和错切。
1.1 公式
在二维空间中,仿射变换可以表示为一个 2x2 矩阵 和一个 2x1 向量 的形式:
其中, 和 分别表示变换前后的二维坐标向量,具体形式如下:
在三维空间中,仿射变换可以表示为一个 3x3 矩阵 和一个 3x1 向量 的形式:
其中, 和 分别表示变换前后的三维坐标向量,具体形式如下:
1.2 原理
仿射变换的基本原理是通过矩阵乘法实现对坐标的变换。对于二维空间,2x2 矩阵 负责实现缩放、旋转和错切变换,2x1 向量 负责实现平移变换。对于三维空间,同样的原理适用于 3x3 矩阵 和 3x1 向量 。
1.3. 用途
仿射变换在许多领域都有广泛应用,例如计算机图形学、图像处理、机器人学和地理信息系统等。以下是一些常见的应用场景:
- 图像处理:仿射变换可以用于图像的变换操作,如旋转、缩放、平移以及透视矫正等。
- 计算机图形学:在 3D 渲染中,仿射变换可以用于实现场景中物体的变换,如旋转、缩放和平移等。
- 机器人学:仿射变换可用于表示机器人关节的运动和变换。
- 地理信息系统:仿射变换可用于地图投影和坐标转换等操作。
总之,仿射变换作为一种通用的几何变换,在许多领域都有重要的应用价值。
2. 投影变换
设 和 分别表示世界坐标系和相机坐标系中的点,投影变换可以表示为:
可以得出
投影后的点 可以表示为:
透视变换可以通过四个点的变换前后位置来确定,在 OpenCV 中可以使用 getPerspectiveTransform(srcQuad, dstQuad, mat)
函数来计算透视变换矩阵,使用 warpPerspective(src, dst, mat)
函数来实现透视变换。