仿射变换和透视变换

本文介绍了仿射变换和透视变换的基本概念,包括它们的性质和应用场景。仿射变换是二维坐标到二维坐标的线性变换,保持图形的平直性和平行性;透视变换则涉及三维空间,是非线性变换,常用于模拟视觉效果。两者的关系在于,仿射变换是透视变换的一种特殊情况。此外,还阐述了图像坐标系、相机坐标系和世界坐标系的概念及它们之间的变换关系。

1 简述仿射变换和透射变换的基本概念,并用实例说明

仿射变换:
仿射变换的表达式一般为:
在这里插入图片描述
平移、比例缩放和旋转变换都是一种称为仿射变换的特殊情况。
具有如下性质:
(1)仿射变换有6个自由度(对应变换中的6个系数),因此,仿射变换后互相平行直线仍然为平行直线,三角形映射后仍是三角形。但却不能保证将四边形以上的多边形映射为等边数的多边形。
(2)仿射变换的乘积和逆变换仍是仿射变换。
(3)仿射变换能够实现平秱、旋转、缩放等几何变换。
比如我们将一个平面坐标旋转加平移就是仿射变换
仿射变换是一种二维坐标到二维坐标之间的线性变换,保持二维图形的平直性,保持二维图形的“平直性”(即变换后直线还是直线不会打弯,圆弧还是圆弧)和“平行性”(其实是指保二维图形间的相对位置关系不变,平行线还是平行线,相交直线的交角不变。)。如下图所示
在这里插入图片描述
参考链接:
https://blog.youkuaiyun.com/sailinglt/article/details/77196364
https://www.cnblogs.com/bnuvincent/p/6691189.html
透视变换:
本质是将图像投影到一个新的视平面。仿射变换可以理解为透视变换的特殊形式。利用透视中心、像点、目标点三点共线的条件,按透视旋转定律使承影面(透视面)绕迹线(透视轴)旋转某一角度,破坏原有的投影光线束,仍能保持承影面上投影几何图形不变的变换。如图所示;
在这里插入图片描述

对于透视投影,一束平行于投影面的平行线的投影可保持平行,而不平行于投影面的平行线的投影会聚集到一个点,该点称为灭点。
当在行驶过程中,看向远处,马路两边的白线会向交于一点
两者的关系
仿射变换:二维空间的变换 ; 线性变换 ;已知3对坐标点就可以求得变换矩阵
透视变换:三维空间的变换 ; 非线性变换 ;已知4对坐标点可以求得变换矩阵
参考链接:
https://blog.youkuaiyun.com/Liuqz2009/article/details/61198790
https://blog.youkuaiyun.com/zhanghm1995/article/details/80762274
2 结合图简述图像坐标系、相机坐标系和世界坐标系的定义,并说明三者之间的变换关系

在这里插入图片描述
1 像素坐标系
原点:图像左上角P0点
单位:像素
横坐标u:图像数组中的列数
纵坐标v:图像数组中的行数
2 图像坐标系:
在图像像素坐标系下建立以物理单位(以下均假设为mm)表示的坐标系,使像素尺度具有物理意义。
原点:主点(相机光轴与图像平面的交点,一般位于图像平面中心,即图中O1点)
单位:mm/像素
横轴x轴:与像素坐标系下的u轴平行
纵轴y轴:与像素坐标系下的v轴平行
像素坐标系与图像坐标系的转换关系:

在这里插入图片描述

其中,dx为每个像素在横轴x上的尺寸,dy为每个像素在纵轴y上的尺寸。将其写成矩阵形式:
在这里插入图片描述

3 相机坐标系
在这里插入图片描述

图中:xy平面为图像平面

原点:摄像机光心O点
Xc轴:与图像坐标系x轴平行
Yc轴:与图像坐标系y轴平行
Zc轴:摄像机光轴,与图像平面垂直
OO1=f(焦距)
图像坐标系和相机坐标系的转换关系:
在这里插入图片描述
将其写成矩阵形式:

在这里插入图片描述

4 世界坐标系
世界坐标系用来描述相机的位置,即相机坐标系原理图中的Ow-XwYwZw坐标系。
相机坐标系与世界坐标系的转换关系:

在这里插入图片描述

其中:
R为旋转矩阵,是x,y,z三个轴向旋转矩阵的乘积,即R=RxRyRz。
T为平移向量,表示三个轴向上的平移距离,即T=[Tx,Ty,Tz](上标表转置)。
Lw为由旋转平移构成的一个4*4的矩阵。
由上述对三个坐标系之间的转换可以推导得到图像像素坐标系和世界坐标系的转换关系:
在这里插入图片描述
参考链接:https://blog.youkuaiyun.com/weicao1990/article/details/82688446
3 什么是相机的内、外参数矩阵?实际中你能结合身边的实例(如电脑摄像头、手机镜头)说明这些参数的大致值么?
像素坐标系与物理坐标系的转换关系如图所示:
在这里插入图片描述

在这里插入图片描述
外参:
即为外参矩阵,之所称之为外参矩阵可以理解为只与相机外部参数有关,且外参矩阵随刚体位置的变化而变化。
内参:内参矩阵可以理解为矩阵内各值只与相机内部参数有关,且不随物体位置变化而变化。

参考链接:
https://blog.youkuaiyun.com/qq_30815237/article/details/87530011

<think>好的,我现在需要帮助用户理解仿射变换透视变换之间的区别,特别是在维度上的差异。首先,我得回顾一下自己对这些概念的理解,确保准确无误。 根据用户提供的引用资料,仿射变换是二维的线性变换,保持平行性角度关系,而透视变换属于三维投影变换,会导致平行线相交,属于非线性变换。用户特别关注维度上的差异,所以我需要重点比较两者在处理维度转换时的不同步骤。 首先,我需要明确仿射变换的数学表示。根据引用[3],仿射变换使用一个可逆矩阵A,可能包括平移、旋转、缩放剪切。变换后的点仍然在二维平面上,只是坐标被线性变换。例如,仿射变换的矩阵是2x3的,应用时每个点(x,y)通过矩阵乘法平移得到新的坐标。这里需要注意,仿射变换虽然可以引入三维矩阵运算,但结果仍投影回原二维空间,如引用[4]提到的,变换后的Z值保持为1,因此不影响最终投影。 接下来是透视变换,也就是射影变换。根据引用[1],透视变换有8个自由度,而仿射变换有6个。这说明透视变换的参数更多,能够处理更复杂的形变。关键点在于,透视变换矩阵是3x3的,并且变换后的点需要除以Z坐标(在齐次坐标中),这导致非线性效应。例如,引用[4]提到,透视变换会将二维点提升到三维,再进行投影,导致平行线可能不再平行。这一点在维度处理上与仿射不同,仿射变换虽然也可能用到三维矩阵,但不会改变Z值,因此投影时直接忽略Z,保持线性。 用户可能存在的疑问是:为什么同样是使用矩阵,仿射透视在维度处理上有这样的差异?根据引用[4],仿射变换透视变换的特例,当透视矩阵的第三行特定元素为零时,就退化为仿射变换。这时候Z的缩放不会影响投影,因为Z保持为1,所以变换后的坐标不需要除以Z,从而保持线性。 另外,需要解释维度变化带来的效果差异。例如,透视变换会引入“近大远小”的效果,而仿射变换不会。这是因为透视变换考虑了深度信息(Z轴),导致远处的物体在投影后变小,而仿射变换忽略了这一点。引用[2]指出,透视变换改变平行线角度,这正是三维投影的典型特征。 在应用场景上,仿射适用于平面物体的旋转、缩放,而透视用于需要三维效果的情况,比如图像矫正。这里可能需要举例说明,比如在OpenCV中,仿射变换用2x3矩阵,而透视变换用3x3矩阵,并且需要四个点来定义变换,因为四边形在透视变换后可能变成任意四边形,而仿射变换保持平行四边形结构。 总结时,应强调维度处理的核心区别:仿射变换在二维线性空间操作,而透视变换通过三维投影引入非线性变化,导致不同的几何属性变化。</think>### 仿射变换透视变换的维度差异分析 #### 1. **数学定义与维度操作** - **仿射变换** 本质是二维线性变换,通过齐次坐标扩展为3维矩阵运算,但最终结果仍投影回原二维平面。其变换矩阵为: $$ \begin{bmatrix} a & b & t_x \\ c & d & t_y \\ 0 & 0 & 1 \end{bmatrix} $$ 其中平移、旋转、缩放、剪切均保持二维平面的平行性。变换后点的坐标计算为: $$ x' = a \cdot x + b \cdot y + t_x, \quad y' = c \cdot x + d \cdot y + t_y $$ 所有操作均未引入三维空间投影的除法操作[^3][^4]。 - **透视变换** 属于三维空间到二维平面的投影变换,需使用齐次坐标并引入非线性运算。其变换矩阵为: $$ \begin{bmatrix} h_{11} & h_{12} & h_{13} \\ h_{21} & h_{22} & h_{23} \\ h_{31} & h_{32} & h_{33} \end{bmatrix} $$ 变换后的坐标为: $$ x' = \frac{h_{11}x + h_{12}y + h_{13}}{h_{31}x + h_{32}y + h_{33}}, \quad y' = \frac{h_{21}x + h_{22}y + h_{23}}{h_{31}x + h_{32}y + h_{33}} $$ 分母项$h_{31}x + h_{32}y + h_{33}$导致非线性效应(如平行线相交),这是三维投影的核心特征[^1][^4]。 #### 2. **几何特性对比** | **特性** | **仿射变换** | **透视变换** | |----------------|---------------------------|---------------------------| | **平行性保持** | 平行线仍平行[^2] | 平行线可能相交(如铁轨)[^2] | | **角度保持** | 角度不变[^2] | 角度改变[^2] | | **自由度** | 6(平移2+线性变换4)[^3] | 8(需额外参数控制投影)[^1] | | **维度操作** | 二维线性空间内的变换 | 三维投影到二维平面 | #### 3. **应用场景差异** - **仿射变换**:适用于平面图像调整(如旋转、缩放证件照),因不破坏平行关系[^3]。 - **透视变换**:用于模拟三维视角(如倾斜拍摄的图片矫正为正面视图),需处理“近大远小”效果[^4]。 #### 4. **OpenCV实现对比** ```python # 仿射变换(需3个对应点,使用2x3矩阵) import cv2 src_points = np.float32([[0,0], [1,0], [0,1]]) dst_points = np.float32([[0,0], [2,0], [0,2]]) M_affine = cv2.getAffineTransform(src_points, dst_points) result = cv2.warpAffine(image, M_affine, (width, height)) # 透视变换(需4个对应点,使用3x3矩阵) src_quad = np.float32([[0,0], [1,0], [1,1], [0,1]]) dst_quad = np.float32([[0,0], [1,0], [0.8,1.2], [0.2,1]]) M_perspective = cv2.getPerspectiveTransform(src_quad, dst_quad) result = cv2.warpPerspective(image, M_perspective, (width, height)) ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值