测量手绘曲线与模板的相似度,惩罚刻度/旋转

时间:2014-04-07 19:14:55

标签: c++ opencv computer-vision curve-fitting

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

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

要清楚,

  1. 应支持在任一方向绘制笔划(尽管可能会添加此内容,即使基础算法不支持测试两次。)
  2. 指标不应对平移,旋转,缩放不变,即用户必须在适当的位置绘制形状。
  3. 中风可能会或可能不会被关闭。我们事先知道模板是否已关闭。如果关闭状态(例如椭圆),那么我们更喜欢用户能够在椭圆上的任何点开始和结束他们的笔划。如果需要,我们可以在测试相似性之前关闭绘制的曲线。
  4. 当你试图强健匹配任意输入时,我意识到这与大多数计算机视觉相反。在这种情况下,我想要将输入的正确性评分为非常精确的目标。任何人都可以建议一个更好的方法吗?我是计算机视觉的新手,虽然在图形开发方面经验丰富,但如果这是微不足道的话,请道歉。

1 个答案:

答案 0 :(得分:0)

一个不错的选择是倒角匹配。它非常强大,但对于转换不是不变的,正如您所要求的那样。输入是一个点集,因此无论它是否为闭合曲线都无关紧要,并且笔划的方向也无关紧要。

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

它应该在OpenCV中,但我再次找不到任何文档,只有this sample。但无论如何,如果你有一个distance transform的实现,那么写你自己是微不足道的。

Here是原始出版物,仅供参考。