测量手绘曲线与模板的相似性,惩罚比例/旋转

Measuring similarity of hand-drawn curve to template, penalizing scale/rotation

本文关键字:惩罚 旋转 相似性 曲线 手绘 测量      更新时间:2023-10-16

我有一个简单的应用程序,我希望在屏幕上向用户呈现一个笔画(任意但可能非常简单的 2D 曲线路径),并要求用户复制它,再次用一个笔画。我想测量用户复制笔画的准确性。

我第一次尝试使用 cv::matchShapes 复制此功能,将源曲线点的向量与绘制曲线的向量进行比较,正确地对形状相似性进行了很好的评分,但实际上太健壮了。我希望用户就地复制笔触,而不是在屏幕上的任意位置/比例上绘制它。

需要明确的是,

  1. 应该支持在任一方向上绘制笔画(尽管即使基础算法不支持两次测试,也可以添加此笔画。
  2. 度量不应因平移、旋转、缩放而保持不变,即用户必须将形状绘制到位。
  3. 中风可能会也可能不会闭合。我们事先知道模板是否已关闭。如果试探是闭合的(例如椭圆),那么我们希望用户能够在椭圆上的任意点开始和结束他们的笔触。如果需要,我们可以在测试相似性之前关闭绘制的曲线。

我意识到这与大多数计算机视觉相反,当你试图稳健地匹配任意输入时。在这种情况下,我想对输入的正确性进行评分,以达到非常精确的目标。任何人都可以提出更好的方法吗?我是计算机视觉的新手,虽然在图形开发方面经验丰富,所以如果这是微不足道的,请道歉。

一个不错的选择是倒角匹配。它非常健壮,但不能像您需要的那样对转换一成不变。输入是一个点集,因此它是否是闭合曲线并不重要,笔触的方向也无关紧要。

虽然这是一个非常标准的方法,但我没有找到维基百科的文章;这是我找到的最好的来源,尽管它实际上是在讨论一种扩展方法。

它应该在 OpenCV 中,但我再次没有找到任何文档,只有此示例。但无论如何,如果你有一个距离变换的实现,自己写是微不足道的。

这是原始出版物,供参考。