透视变换是如何工作的? [OpenCV 蟒蛇]
Posted
技术标签:
【中文标题】透视变换是如何工作的? [OpenCV 蟒蛇]【英文标题】:How does perspective transformation work? [OpenCV python] 【发布时间】:2021-07-13 15:36:48 【问题描述】:我的论文的一部分涉及纠正图像中没有完美正面透视的部分。由于我的分数低,我无法添加图像,但本质上是这个python code (with images)。
我已经构建了程序并且它可以工作,但我不明白它背后的数学原理。我研究了矩阵图像校正和单应性,但存在巨大的技能差距,以至于我无法理解。我不确定从哪里开始学习数学。我知道矩阵的基础知识,仅此而已。我想自己编写矩阵变换函数。
简而言之,我需要“学习”什么才能理解数学?
谢谢。
【问题讨论】:
【参考方案1】:透视变换只是从矩阵形式求解的分数线性方程。
分数线性方程的形式是分子线性,分母线性,即分子和分母都最高的一阶项。
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 对(或更多)对共轭输入和输出坐标的联立方程求解。
【讨论】:
【参考方案2】:我敢肯定这是不可能的,但你可以试试。 事实上,射影几何是大学数学专业研究的一个深刻的数学概念。如果你真的想很好地理解它,你必须成为一个数学家。 在线性代数、解析几何和仿射几何之后,依次研究射影几何。 但我怀疑你需要这一切。 你可以考虑一个专注于图像处理的简化方法,比如here和here
【讨论】:
以上是关于透视变换是如何工作的? [OpenCV 蟒蛇]的主要内容,如果未能解决你的问题,请参考以下文章
初学opencv c++学习笔记透视变换--warpPerspective()