【问题标题】:Curve matching in JavaJava中的曲线匹配
【发布时间】:2014-11-19 17:08:37
【问题描述】:

这里的第一个问题很抱歉,如果我问的任何问题完全是愚蠢的。

我正在从事一个形状识别项目,我应该开发一个接收两个图像的应用程序:一个原始图像和一个用户制作的草图。我应该检测两个图像的轮廓,并在原始图像中找到与用户绘制的草图相对应的最佳匹配。

我已经在学习有关 Canny 边缘检测的一些基础知识,并且能够获得多张图像的轮廓。得到轮廓后,我需要分析图像中的所有轮廓并找到最佳匹配,忽略平移、旋转、缩放和遮挡。

然后,我发现这段代码完全符合我的要求: http://www.morethantechnical.com/2012/12/27/2d-curve-matching-in-opencv-w-code/ 但在 C++ 中。

您知道 Java 中类似代码的替代方法或任何可能对我有用的算法吗?我也发现了 BoofCV,但似乎没有实现这样的任务。

感谢您的耐心等待。

编辑:

我一直在寻找其他方法,我找到了 Hausdorff 距离: http://cgm.cs.mcgill.ca/~godfried/teaching/cg-projects/98/normand/main.html

是否可以将此算法修改为旋转不变?他们只谈论平移和缩放。

【问题讨论】:

  • 感谢您的建议 :) 我尝试使用 OpenCV 中的 findContours 和 matchShapes,但结果并不好。胡矩说,一个小矩形与平面的轮廓最相似……

标签: java opencv matching curve


【解决方案1】:

正如您提到的,您已经拥有 C++ 源代码,但找不到 Java 版本 - 最好的选择可能是将 C++ 代码转换为 Java 代码。如果您不需要 C++ 程序的所有部分,您可能只想隐藏您需要的部分(类)。

从 C++ 到 Java 的转换可能并不总是微不足道的,但我猜如果你确切地知道你想要什么以及你希望你的程序如何运行,它可能会更容易。下面是一些转换工具的链接 - 尽管它们可能不是免费的。

http://www.researchgate.net/post/How_to_convert_the_C_C_code_to_java2

【讨论】:

  • 我会接受你的回答,因为你是唯一一个回答的人。我无法转换代码,所以我决定从一篇关于这个主题的论文中实现一个算法。
猜你喜欢
  • 2020-05-05
  • 1970-01-01
  • 1970-01-01
  • 2018-09-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-23
相关资源
最近更新 更多