图像的仿射变换与透视变换研究

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sss_369/article/details/83713516

                                           

                      

上面三幅图分别为标志图形、道路标线、QR码的校正前后图,校正采用的是透视变换矩阵。

下面就主要研究一下透视变换。

1. 概念

透视变换(Perspective Transformation)是指利用透视中心、像点、目标点三点共线的条件,按透视旋转定律使承影面(透视面)绕迹线(透视轴)旋转某一角度,破坏原有的投影光线束,仍能保持承影面上投影几何图形不变的变换。

上面是百度百科上关于透视变换的定义。(看了一遍没看懂)

讲到透视变换通常也会听到仿射变换,其实仿射变换和透视变换是一回事,不同之处在于仿射变换是二维坐标变换,透视变换是三维坐标变换。

仿射变换:

                                                                 

透视变换:

                                                 

其中,(u,v)为变换前的坐标,(x‘,y')为变换后的坐标;

由上述公式可知,仿射变换有6个未知数,透视变换有8个未知数,因此仿射变换矩阵的求解只需3组映射点(三点确定一个平面),透视变换矩阵的求解只需4组点(四点确定一个三维空间)。

2. 透视变换(Perspective Transformation)的本质是将图像投影到一个新的视平面,

其通用变换公式为:

                                                    

透视变换矩阵元素的含义:

                                                  

3. opencv函数形式

仿射变换函数:

void warpAffine(InputArray src, 
                OutputArray dst, 
                InputArray M, 
                Size dsize, 
                int flags=INTER_LINEAR, 
                int borderMode=BORDER_CONSTANT, 
                const Scalar& borderValue=Scalar())

仿射变换矩阵生成函数:

Mat getAffineTransform(const Point2f* src, const Point2f* dst)
//@param: const Point2f* src:原图的三个固定顶点
//@param: const Point2f* dst:目标图像的三个固定顶点
//@return:仿射变换矩阵,可直接用于warpAffine()函数
//顶点数组长度超过3个,则会自动以前3个为变换顶点;

透视变换函数:

void warpPerspective(InputArray src, 
                     OutputArray dst, 
                     InputArray M, 
                     Size dsize, 
                     int flags=INTER_LINEAR, 
                     int borderMode=BORDER_CONSTANT, 
                     const Scalar& borderValue=Scalar())
Mat getPerspectiveTransform(const Point2f* src, const Point2f* dst)
//@param: src,dst原始点和目标点,个数>=4
//@:透视变换顶点为4个。

参考文章:

1.  https://mp.weixin.qq.com/s/b10zBadlvrSCeXVnrYHwHQ

2.  https://blog.csdn.net/yong_qi2015/article/details/80108276

3.  https://www.cnblogs.com/liekkas0626/p/5262942.html

4.  https://blog.csdn.net/hitwengqi/article/details/6890220 

5.  http://m.elecfans.com/article/593459.html

猜你喜欢

转载自blog.csdn.net/sss_369/article/details/83713516