【发布时间】:2017-05-11 17:39:31
【问题描述】:
我正在做一个学校项目,我的目标是识别物体。我从拍照开始,应用各种滤镜并进行边界追踪。傅里叶描述符对我来说太高了,所以我开始从我的点列表中近似多边形。现在我必须匹配这些多边形,它们都具有相同数量的顶点并且所有站点都具有相同的长度。更具体地说,我有两个多边形,现在我必须计算一些相似度。这个过程必须是平移、旋转和尺度不变的。
我尝试以不同的方式转动和缩放一个并计算每对顶点之间的距离,但这很慢。
我尝试在一组向量中转动多边形,计算每个角的角度并进行比较。但这也有点慢。
我发现了一篇名为 Contour Analysis 的文章。但我觉得这有点困难。在本文中,首先将每个集合的所有向量都解释为复数,因此我们只有两个具有复数的向量。然后计算两个向量的余弦。但是余弦也是一个复数,如果两个向量相同,它的范数总是 1。那么将一组向量解释为一个向量有什么意义。我不明白这种做法。
还有其他方法可以比较两个多边形或向量集吗?或者有人可以解释我的第三次尝试还是用法线向量来做?
我希望有人可以帮助我:-)
【问题讨论】:
-
发布您需要帮助的代码,我们会尽力提供帮助。
-
我没有第三种解决方案的任何代码。在文章中,他有多个二维向量,每个向量都写成复数。但随后他将所有这些组合到一个 n 维向量中,其中每个化合物都是复数(前 2D 向量),然后他使用您可以在维基百科上找到的公式计算两个 n 维向量的余弦:en.wikipedia.org/wiki/Cosine_similarity .从中他没有像往常一样得到余弦值,而是一个复数,其中实部是余弦,范数是相似度的标量。但我不明白。
标签: c# geometry similarity polygons