【发布时间】:2015-10-04 03:58:32
【问题描述】:
我有一个算法,可以使用 OpenCV 的 findHomography 计算单个图像中多个标记的单应性。这工作正常,但由于标记的大小/图像的分辨率,计算的旋转通常非常不准确(主要是围绕标记的 x 和 z 轴,假设 y 向上)。我很想找到一种方法来改善这一点。
我有一个假设,即我知道所有标记都在同一平面上(它们在桌子上)这一事实应该有助于改善单应性 - 然后我只需要计算标记围绕单个的旋转轴 - 但我知道的不够多,无法将其付诸实践。任何人都可以在这方面给我任何指导吗?
这是我试图处理的情况的一个例子(标记上的图像在现实中是不同的)。
【问题讨论】:
-
你必须知道标记之间的相对位置(如果你以后需要平面坐标,甚至是平面上的绝对位置)。但是在您的示例中,您可以从单个箭头计算 homogr(如果它 ptovides >= 4 个点/标记),然后计算任何其他标记与该 homogr 的相对位置
-
您可以尝试从 3 个单个标记(在您的示例中)计算 3 个单个单应性并尝试某种平均或选择“最佳”一个。
-
这是我目前的方法,但我经常发现其中一个标记的方向非常不同,而另外两个很好。如果我有大量的制造商,我可以以某种方式丢弃异常值,但如果有 2 或 3 个标记,那将是一件比较棘手的事情。
-
我的想法是: 1. 每个标记有 4 个或更多已知点。 2.当你有单应性时,你可以通过单应性和其他标记点的像素位置来找到其他标记的平面位置。 3.如果单应性好,“重构”的复数标记在重构平面位置必须具有正确的形状。如果单应性不好,则重建的标记将具有错误的形状。如果无法理解我的意思(在评论中不容易),我会尝试用一些图形来创建答案:)
-
@Micka:我明白你的意思——这是一种有趣的方法。我想如果你找到一个产生有效形状的单应性(我想你可以使用各种指标相当快地分辨出来,例如宽度/高度的比率),那么你可以使用该单应性转换你的点,然后计算仿射变换并将两者结合起来一起生成标记的单应性。
标签: opencv computer-vision homography