具有较少关键点的单应矩阵和图像变换

Posted

技术标签:

【中文标题】具有较少关键点的单应矩阵和图像变换【英文标题】:homography matrix and image transformation with less keypoints 【发布时间】:2014-04-03 08:27:20 【问题描述】:

当使用较少数量的匹配关键点 (>4) 计算带有 RANSAC 的单应矩阵时,带有 warpPerspertive 的变换图像会以某种方式失真或倾斜。当使用相同的图像与更多匹配的关键点进行扭曲时,结果很好。我看到了一个类似的问题here,但仍然没有解决。

理论上我们只需要 4 个匹配的关键点,但为什么它不起作用?谁能解释或提供一些论文来解释背后的原因。

谢谢

【问题讨论】:

你可能不在正确的地方问这个问题,尝试一些图像处理论坛,我敢打赌他们会更好地帮助 你确定所有的关键点对应都有效吗? findHomography 使用 RANSAC 方法查找对应关系中的异常值。 RANSAC 假设有一定百分比的内点,所以如果你的关键点很少,这个百分比可能不再成立。我建议使用 RANSAC 实现您自己的 findHomography 以更好地控制行为。 @chouaib,谢谢,我也在opencv论坛问过。 @Micka 你的意思是我应该手动计算单应矩阵?是的,关键点匹配也是用RANSAC做的,所以匹配的效果很好。 如何用RANSAC进行匹配? RANSAC 用于单应性计算 afaik。匹配是在单应性计算之前,并定义了关键点之间的对应关系。通常,其中一些是好的/正确的,而另一些是错误的。 - 您可以使用 OpenCV 从 4 个关键点对应计算单应性,我的意思是使用该功能来实现您自己的 RANSAC,它将 4-correspondences-homography 扩展为 best-of-inlier-correspondences 单应性或拒绝4 对应 hom。 inf.u-szeged.hu/~kato/teaching/computervision/Lab05-RANSAC.pdf 【参考方案1】:

问题的很大一部分是我们在图像中的精度有限。许多算法利用亚像素精度,但由于各种原因很难找到准确的位置。只有少数是由于将场景离散为像素、图像分辨率的差异、相机传感器的缺陷和特性、照明变化等,视觉信息会丢失。

考虑一维情况。假设我们有两个点应该放置在确切的位置 0 和 20.5,但实际上是在 0 和 20。这是 2.5% 的错误。如果这些点用于转换大小为 500 的一维图像,则某些像素可能相差 12.5 个像素。这些错误在远离我们发现的对应关系的部分图像中具有非常大的影响。这称为测量误差

显然,如果我们有一个错误的对应关系,那么单应性就会很糟糕。这些错误匹配称为分类错误。在实践中,我们不能指望使用任何 OpenCV 点描述符生成的任何四个匹配都是完全正确的。我们可以(取决于场景和设置)依靠许多点来接近正确。

看看 Random Sample Consensus: A Paradigm for Model Fitting with Applications to Image Analysis and Automated Cartography,作者为 Fishler 和 Bolles。它描述了一种类似于 OpenCV 中的 RANSAC 的算法。它简要讨论了分类和测量误差的影响。它说测量误差通常遵循正态分布,所以如果我们有很多匹配,测量误差的影响最小。我们还可以找到一种方法来确定哪些匹配项可能是分类错误并将其影响降至最低。

【讨论】:

嗨@Danny,感谢您的回答。让我看看你提到的那篇论文。我真的需要知道为什么使用 RANSAC 的单应性在匹配次数较少的情况下不能给出好的结果.. 我理解你的解释。谢谢你,但没有找到任何解决问题的方法。他们在论文中说,RANSAC 可以最小化测量误差,但即使我们使用 RANSAC 来查找单应矩阵,它们的结果也很糟糕.. 嗯,只有通过多点才能最小化测量误差。根据应用程序的不同,我认为我使用了多达 100 到 1000 个点的对应关系并取得了很好的效果。实际上,我也尝试过使用

以上是关于具有较少关键点的单应矩阵和图像变换的主要内容,如果未能解决你的问题,请参考以下文章

计算两幅图像之间的单应矩阵

2021-04-11

2021-04-11

从单应性中提取变换和旋转矩阵?

OpenCV仿射变换+投射变换+单应性矩阵

单应性(homography)变换的推导