Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/148.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 测量手绘曲线与模板的相似性,惩罚缩放/旋转_C++_Opencv_Computer Vision_Curve Fitting - Fatal编程技术网

C++ 测量手绘曲线与模板的相似性,惩罚缩放/旋转

C++ 测量手绘曲线与模板的相似性,惩罚缩放/旋转,c++,opencv,computer-vision,curve-fitting,C++,Opencv,Computer Vision,Curve Fitting,我有一个简单的应用程序,我希望在屏幕上向用户展示一个笔划(一个任意的,但可能非常简单的2D曲线路径),并要求用户再次用一个笔划复制它。我想测量用户复制笔划的准确性 我第一次尝试使用cv::matchShapes复制此功能,将源曲线点的向量与绘制曲线的向量进行比较,结果正确地获得了形状相似性,但实际上过于健壮。我希望用户在适当的位置复制笔划,而不是在屏幕上的任意位置/比例绘制笔划 说清楚了, 应支持在任一方向绘制笔划(尽管即使基础算法不支持两次测试,也可以添加笔划) 度量不应该对平移、旋转、缩放保

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

我第一次尝试使用cv::matchShapes复制此功能,将源曲线点的向量与绘制曲线的向量进行比较,结果正确地获得了形状相似性,但实际上过于健壮。我希望用户在适当的位置复制笔划,而不是在屏幕上的任意位置/比例绘制笔划

说清楚了,

  • 应支持在任一方向绘制笔划(尽管即使基础算法不支持两次测试,也可以添加笔划)
  • 度量不应该对平移、旋转、缩放保持不变,也就是说,用户必须在适当的位置绘制形状
  • 冲程可能关闭,也可能不关闭。我们提前知道模板是否已关闭。如果tempate是闭合的(例如椭圆),那么我们希望用户能够在椭圆上的任意点开始和结束笔划。如果需要,我们可以在测试相似性之前关闭绘制的曲线
  • 我意识到这与大多数计算机视觉相反,当你试图可靠地匹配任意输入时。在本例中,我希望对输入的正确性进行评分,以获得非常精确的目标。谁能提出一个更好的方法?我是计算机视觉新手,虽然在图形开发方面有着丰富的经验,但如果这是一件小事,请道歉。

    倒角匹配是一个不错的选择。它非常健壮,但不会像您所需要的那样对变换保持不变。输入是一个点集,因此它是否为闭合曲线并不重要,笔划的方向也不重要

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

    它应该在OpenCV中,但我也没有找到任何文档,只有。但是在任何情况下,如果您有一个a的实现,那么您自己编写就很简单了

    是原始出版物,供参考