智客公社

标题: 透视变换原理实例代码详解 [打印本页]

作者: lyh1014    时间: 2020-2-23 14:06
标题: 透视变换原理实例代码详解
导读

在上篇文章中,我们引见了仿射变换,我们只需求经过一个两行三列的变换矩阵M就可以对图像完成平移缩放翻转旋转操作。这些变换其实都属于平面变换,假如我们想要停止空间变换呢?
[attach]300243[/attach]
原始图像



将上图的扑克牌单独提取出来,如下图所示
[attach]300244[/attach]
目的图像



这时分我们应该如何来完成这个功能呢?这个其实就触及到了图像的一个空间变换,就需求用到我们所说的透视变换了。
透视变换

透视变换(Perspective Transformation)是指应用透视中心像点目的点三点共线的条件,按透视旋转定律使承影面(透视面)绕迹线(透视轴)旋转某一角度,毁坏原有的投影光线束,仍能保持承影面上投影几何图形不变的变换。简而言之,就是将一个平面经过一个投影矩阵投影到指定平面上
[attach]300245[/attach]


透视变换通用的变换公式:



[attach]300246[/attach]

u和v是原始图片,参数ω等于1,经过透视变换后得到的图片坐标x,y,其中



[attach]300247[/attach]

上式中的变换矩阵,可以将其拆成四个部分,第一部分表示线性变换
[attach]300248[/attach]

这部分矩阵次要用于图像的缩放旋转操作,在仿射变换中我们也引见过。第二部分用来停止平移操作[a31a32],第三部分用来产生透视变换[a13a23],第四部分参数a33​等于1
在上篇文章中我们引见的仿射变换矩阵一共有6个参数,所以我们只需求3个坐标对(6个方程)就能求解,而透视变换矩阵一共有8个参数,所以需求4个坐标对(8个方程)才能求解,其实仿射变换也是透视变换的一种特殊方式
所以变换后x和y的表达式为
[attach]300249[/attach]

接上去我们看一个例子,原始图像的四个点的坐标分别为(0,0)、(1,0)、(1,1)、(0,1)与之对应变换后的四个点坐标分别为(x1,y1)、(x2,y2)、(x3,y3)、(x4,y4),根据下面的公式和对应的四个点坐标可得下面的方程式
[attach]300250[/attach]

经过下面的8个方程,我们可以解出8个参数求出透视变换矩阵,最后我们经过opencv的warpPerspective方法应用透视变换矩阵来完成透视变换,接上去我们经过结合一个实例来详细运用一下。
透视变换实例讲解

这里我们次要经过opencv来完成下面引见的那个功能
[attach]300251[/attach]


Canny函数参数解析



[attach]300252[/attach]

[attach]300253[/attach]


HoughLinesP函数参数解析



[attach]300254[/attach]

[attach]300255[/attach]


经过直线两个端点的坐标来计算直线的交点坐标,找出扑克牌的四个顶点地位
[attach]300256[/attach]

[attach]300257[/attach]


在计算透视变换矩阵之前我们需求对元素图像的坐标与变换后图像的坐标逐一对应,按照左->上->右->下的顺序



[attach]300258[/attach]

[attach]300259[/attach]



[attach]300260[/attach]

作者: 屠豚手    时间: 2020-2-23 14:14
这篇文章怎样放到文娱板块了?这应该是科技板块哇。
作者: 梦恋米兰    时间: 2020-2-23 14:21
这个凸四边形拉直的好像cpp写过一个微分差值的,但是四个定点要手动指定
作者: 小宇宙无限爆发    时间: 2020-2-23 14:26
霍夫直线检测这个之前不知道,绕了很多弯路。
作者: wocaoni928    时间: 2020-2-23 14:29
不明觉厉
作者: wangxiaoxi    时间: 2020-2-23 14:31
分享了
作者: 简单白勺心情    时间: 2020-2-23 14:38
分享了
作者: happy幸福    时间: 2020-2-23 14:42
分享了
作者: 境界下面给你吃    时间: 2020-2-23 14:47
分享了
作者: A区123    时间: 2020-2-23 14:56
分享了
作者: 宋少    时间: 2020-2-23 15:02
分享了
作者: 此奶大胸之兆55    时间: 2020-2-23 15:11
分享了
作者: zzz861025    时间: 2020-2-23 15:22
分享了
作者: 阿琪love锋    时间: 2020-2-23 15:24
分享了
作者: weiyizhifu    时间: 2020-2-24 11:23
我了个去,顶了
作者: 林yi    时间: 2020-2-24 22:30
前排支持下了哦~
作者: 你缺了吗    时间: 2020-2-26 07:50
为了三千积分!




欢迎光临 智客公社 (http://bbs.cnaiplus.com/) Powered by Discuz! X3.4