Opencv 单应如何计算?
我在理解平面对平面单应性的工作原理方面遇到了不少困难。我特别想知道opencv方法是如何工作的 它像光线追踪吗?齐次坐标与比例矢量有何不同Opencv 单应如何计算?,opencv,geometry,computer-vision,Opencv,Geometry,Computer Vision,我在理解平面对平面单应性的工作原理方面遇到了不少困难。我特别想知道opencv方法是如何工作的 它像光线追踪吗?齐次坐标与比例矢量有何不同 我读到的所有东西都像你已经知道他们在说什么一样,所以很难理解 googlehomography estimation将此作为第一个链接返回(至少对我来说): . 当然,这是一个糟糕的描述,很多地方被忽略了。如果你想学习这些概念,读一本好书比读一些短文要好得多。这些短文经常会有几个严重的错误,所以要小心 简言之,我们定义了一个代价函数,使这个代价函数最小化的参
我读到的所有东西都像你已经知道他们在说什么一样,所以很难理解 google
homography estimation
将此作为第一个链接返回(至少对我来说):
. 当然,这是一个糟糕的描述,很多地方被忽略了。如果你想学习这些概念,读一本好书比读一些短文要好得多。这些短文经常会有几个严重的错误,所以要小心
简言之,我们定义了一个代价函数,使这个代价函数最小化的参数(单应矩阵的元素)就是我们要寻找的答案。一个有意义的成本函数是几何的,也就是说,它具有几何解释。对于单应情况,我们希望找到H,通过将点从一个图像转换到另一个图像,所有点之间的距离及其对应关系都是最小的。这个几何函数是非线性的,这意味着:1-应该使用迭代方法来求解它,一般来说,2-迭代方法需要初始起点。这里,代数成本函数进入。这些成本函数没有意义/几何解释。通常,设计它们更像是一门艺术,对于一个问题,通常可以找到几个具有不同性质的代数代价函数。代数成本的好处是,它们会导致线性优化问题,因此存在一个封闭形式的解决方案(即一次性/非迭代方法)。但缺点是找到的解决方案不是最优的。因此,一般的方法是首先优化代数代价,然后使用找到的解作为迭代几何优化的起点。现在,如果你在谷歌上搜索这些单应的代价函数,你会发现它们通常是如何定义的
如果您想知道OpenCV中使用的方法,只需查看代码:
这是代数函数DLT,在提到的书中定义,如果你在谷歌上搜索单应DLT,你应该能找到一些相关的文档。然后这里:
一个迭代过程使几何代价函数最小化。高斯-牛顿法似乎已实现:
以上所有讨论都假设两个图像之间存在对应关系。如果某些点与另一幅图像中的不正确点匹配,则会得到异常值,并且上述方法的结果将完全不正确。鲁棒(针对异常值)方法在此处输入。OpenCV为您提供了两个选项:1.RANSAC 2.LMeDS。谷歌是你在这里的朋友
希望能有所帮助。要回答您的问题,我们需要回答4个不同的问题:
1. Define homography.
2. See what happens when noise or outliers are present.
3. Find an approximate solution.
4. Refine it.