透视变换如何工作? [OpenCV python]

How does perspective transformation work? [OpenCV python]

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

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

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

谢谢。

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

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

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

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)

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