我正在使用findHomography
点列表并将结果发送到warpPerspective
.
问题是有时结果是完全垃圾,结果图像由奇怪的灰色矩形表示。
如何检测何时findHomography
向我发送不良结果?
我正在使用findHomography
点列表并将结果发送到warpPerspective
.
问题是有时结果是完全垃圾,结果图像由奇怪的灰色矩形表示。
如何检测何时findHomography
向我发送不良结果?
您可以对输出执行几个健全性测试。在我的头顶上:
导致垃圾结果的常见错误是输入和输出点列表的错误排序,这导致拟合例程使用错误的对应关系工作。检查您的索引是否正确。
理解退化单应性情况是关键。例如,如果您的点共线或接近共线,则无法获得良好的单应性。此外,巨大的灰色方块可能表示极端缩放。这两种情况都可能源于最终单应性计算中的内点很少或映射错误。
为确保这种情况永远不会发生:
1. 确保两幅图像中的点分布良好。
2.确保至少有10-30个对应关系(如果噪音很小,4个就足够了)。
3. 确保点正确匹配并且变换是单应性的。
要找到不良的单应性,请将找到的 H 应用于您的原始点,并查看与您的预期点的分离,即|x2-H*x1| < Tdist
,Tdist
您的距离误差阈值在哪里。如果只有少数点满足此阈值,则您的单应性可能很差,并且您可能违反了上述要求之一。
但这取决于您用来计算单应性的点对应...只要想一想您正在尝试找到将线映射到线(从一个平面到另一个平面)的转换,因此点对应的任何可能配置都不会给你一个创建漂亮图像的单应性。单应性甚至可能将一些点映射到无穷大。