微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无论旋转如何,如何在图像上找到特定点?

如何解决无论旋转如何,如何在图像上找到特定点?

我有一张这样的照片。

Here is the image

这是图片上的点数。我希望点号即使颠倒过来也能保持不变。此旋转可以是任何角度值。

例如

抬头

Head up

颠倒

Upside down

90 度

90 degree

45 度

45 degree

我尝试了一些方法,例如 Opencv 相机校准和姿势估计,但我无法修复点数。

解决方法

我不认为这是一个编程问题,而是一个基本的几何问题。

您在该配置中有 7 个点,并且您想找到一些对旋转具有鲁棒性的几何属性。我能想到的第一件事是距离

  • 计算所有点之间的平方距离 (SD),然后找到使所有其他点的平方距离总和 (SSD) 最大化的那个。那个点是P7。
  • 找到 P7 中 SD 最大的那个。那个点是 P1。
  • 从 P7 中找出 SD 最低的那个。那一点是P6。
  • 从 P7 中找到具有第二个最小 SD 的那个。那个点是 P5。
  • 从 P1 中找出 SD 最小的那个。那个点是 P2。

为了找到 P3 和 P4,您需要检测相对于方向的一侧(左/右)。让我们称 Q 和 R 为两个未知点和一个我们已经确定的方向,例如从 1 到 7 的那个。您现在可以查看从 P1 到 P7 的向量与从 P1 到 P1 的向量之间的叉积的符号问:如果它在右边,则值为正。所以我们能够找到它的身份。

if ( (Q.x - P1.x) * (P2.y - P1.x) - (Q.y - P1.y) * (P2.x - P1.x) > 0) {
    P3 = Q;
    P4 = R;
}
else {
    P3 = R;
    P4 = Q;
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。