图像仿射变换和透视变换

图像仿射变换和透视变换

概述

1.仿射变换:应用在二维平面中,主要包括旋转,平移,缩放,裁剪,反转,可以保证图像物体的形状的平行性。

2.透视变换:应用在三维空间中,不能保证物体的平行性。

3.仿射变换是透视变换的子集。

仿射变换

仿射变换是一种二维坐标到二维坐标之间的线性变换,任意的仿射变换都能表示为乘以一个矩阵(线性变换),再加上一个向量 (平移) 的形式。变换矩阵为2x3维度。
在这里插入图片描述
在这里插入图片描述
方程组有6个未知数,需要求解3组映射点,三个点确定一个平面。

#创建一个2*3的矩阵
#p1、p2分别为输入、输出图像的三个点坐标
M = cv.getAffineTransform(p1, p2)

#实现仿射变换
dst = cv.warpAffine(img, M, (cols,rows))

图像示例:
在这里插入图片描述

透视变换

透视变换是一种是二维(x,y)到三维(X,Y,Z),再到另一个二维(x’,y’)空间的映射,通过矩阵乘法实现,矩阵为3x3的维度。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
方程组有K11,K12,K13,K21,K22,K23,K31,K32共8个未知数,需要求解四组映射点,四个点确定一个三维空间。

#p1、p2分别为输入、输出图像的四个点坐标
M = cv.getPerspectiveTransform(p1,p2)

#也可以使用如下函数从一堆点中计算一个变换矩阵H
H, mask = cv2.findHomography(src_pts, dst_pts, cv2.RANSAC, 5.0)

#透视变换
dst = cv.warpPerspective(img, M, (cols, rows))

图像示例:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值