透视变换是如何工作的? [OpenCV 蟒蛇]

问题描述

我的论文的一部分涉及纠正不是完美正面透视的图像部分。由于我的分数低,我无法添加图片,但本质上是这个 python code (with images)

我已经构建了该程序并且它可以工作,但我不了解其背后的数学原理。我已经研究了矩阵图像校正和单应性,但是在我无法理解的地步上存在巨大的技能差距。我不知道从哪里开始学习数学。我知道矩阵的基础知识,仅此而已。我想达到可以自己编写矩阵变换函数的地步。

简而言之,我需要“学习”什么才能理解数学?

谢谢。

解决方法

透视变换只是从矩阵形式求解的分数线性方程。

分数线性方程具有分子线性和分母线性的形式,即分子和分母中最高的一阶项。

x = (P1*u + P2*v + P3) / (P7*u + P8*v + 1)
y = (P4*u + P5*v + P6) / (P7*u + P8*v + 1)

其中 x,y 是输入坐标,u,v 是输出坐标。 (逆也是分数线性的,所以形式相同)

以矩阵形式,这是:

(x)  =  ( P1  P2  P3 )  (u)
(y)     ( P4  P5  P6 )  (v)
(1)     ( P7  P8   1 )  (1)

这七个未知 P 可以通过来自 4 对(或更多)共轭输入和输出坐标对的联立方程求解。

,

我确定这是不可能的,但你可以试试。 事实上,射影几何是一个深层次的数学概念,在大学的数学专业中都有研究。如果你真的想很好地理解它,你必须成为一个数学家。 在线性代数、解析几何和仿射几何之后,依次学习射影几何。 但我怀疑你需要这一切。 您可以考虑一种专注于图像处理的简化方法,例如 herehere

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...