首先要知道什么事仿射变换,仿射变换就是只包含:平移,旋转,缩放这三种变换的变换。仿射变换会保证变换前后两幅图的“平行性”和“平直性不变”。
大家知道,对二维图像做变换就是要讲每个像素点的坐标通过一个“单应性矩阵”映射到新的坐标点上去。所以关键就是得到这个“单应性矩阵”。
对于仿射变换的单应性矩阵可以用一个2*3的矩阵来表示。一共6个需求的参数,需要6个矩阵(3对对应点)方可以解出。
若已知两幅图中的3对对应点则可以使用getAffinetransform来获得:
其中两个参数都是point2f类型的矩阵,分别存储了两幅图像的对应点。前者是初始点,后者是目标点。
得到变换矩阵warp_mat就可以对图片做变换了。用到的函数如下:
参数分别为:需要做变换的图像,变换后图像,单应矩阵,变换后图像的大小。
得到变化的单应性矩阵还有第二种方法就是使用
其中,center是旋转中心。是point类型的数据。angle 是旋转的角度,正值为逆时针方向。最后是缩放的系数。