图片的仿射,投影(透视)变换

本文详细解读了仿射变换、透视变换和平移、缩放的具体数学表达,包括矩阵运算在图像坐标变换中的应用。特别强调了三维空间与二维投影的关系,以及如何通过解决特定方程确定矩阵参数。重点讨论了在实际操作中如何设置z值以确保正确坐标计算。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考:https://www.cnblogs.com/vincentcheng/p/7191014.html、《opencv算法精解》(张平编著)
下面提到的(x,y)是原始四边形图片的四个角点

仿射变换

平移,放大/缩小、旋转

公式表示:x,y是原来坐标值,前面的是变化后坐标

在这里插入图片描述
上面公式根据矩阵乘法可改成下面
在这里插入图片描述
在这里插入图片描述

平移矩阵

在这里插入图片描述

缩放矩阵

下面是以坐标原点为基准位置对图像坐标进行缩放,若想以想要缩放的图像为
在这里插入图片描述
以图片为中心(x0,y0)进行缩放
在这里插入图片描述

旋转矩阵

α在逆时针情况下为正
在这里插入图片描述
在这里插入图片描述
通过上面两个式子可得到下面的矩阵关系
在这里插入图片描述

投影(透视)变换

透视变换: 透视变换将图像投影到一个新的视平面,是二维到三维再到另一个二维(x’, y’)空间的映射。
透视变换前两行和仿射变换相同,第三行用于实现透视变换。透视变换前后,原来共线的三个点,变换之后仍然共线
在这里插入图片描述

从上面的矩阵形式,看出矩阵参数的作用范围
在这里插入图片描述

在这里插入图片描述
转化关系理解为
1、相当与将最初的二维的(x,y)点映射到三维空间(x,y,z),这一步就会出现无数中情况,只要有四个点分别在垂直于x,y平面且过原坐标点的四条直线上就行;为了计算方便可以设定z的值为任何一个常数,但不能将原始的z和预测的z都设置常数,;
2、同理将这个三维空间的(x,y,z)转化为另一个(x‘,y’,z‘)
3、(x‘,y’,z‘)使得转化后的点在x-y平面的投影是目的坐标点(x’,y‘)
再对三维空间中的点映射到新的二维空间,原始坐标值或变化后的坐标值,都相当于图片投影在坐标x,y轴上的投影图片四个角的坐标,因此对于z轴没有要求,也就是说z的值是任意值,但为了计算可将预测四个点坐标z设置为一个常数或原始的四个点坐标z设置为一个常数,但不能同时设置为常数。如果都设置为常数,那么两个四点所在平面必定平行
对于矩阵的计算所有等式来看,为了求得变换矩阵A,将四个坐标的矩阵等式展开后得到12个等式,下面是一个等式展开
在这里插入图片描述
在这里插入图片描述

最终的等式会出现**:8个关于预测x,y的等式,4个关于预测z的等式**,其中a有下标的,都是是想要求的数据,从上面分析得知有一组z为自己设置的常数,如上图,其他文中提到将z=1,是将A矩阵中的参数
现在的未知参数有4个z,9个a,共13个未知数,但只有12个等式。因为得到一个投影到x-y平面相同投影的四个点z是可以沿着z轴方向平移的
这时只要设定一个z的值,其他12个未知参数也就确定了,也可以确定a中的一个值,然后计算对应的几个z都能变成唯一值。(在opcv中的矩阵就是把a33设置为1),这样做只要能得到正确的x,y坐标值,就没有问题。
仿射变换和透视变换的关系,仿射变换将最初的z都设置为1,而最终得到的预测值的x,y也都可以除以z的值得到(x‘,y’,1)的形式,相当于仿射变换的四个点的z可以都是1 。如下图仿射变换(m31和m32为0,m33是1)
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值