【问题标题】:Discrete Curve evolution algorithm离散曲线进化算法
【发布时间】:2010-03-22 07:35:01
【问题描述】:

我正在尝试在 C++ 中实现离散曲线演化算法,是否有人帮助我使用 psudo 代码或 c 代码或 你理解的一些简单步骤

【问题讨论】:

  • 你的意思是写一个符号回归算法吗?
  • 不,请查看knight.cis.temple.edu/~shape/partshape/structure/3.php 了解有关 DCE 的更多信息(并查看“The DCE Java Applet”链接)。
  • 这个问题是stackoverflow.com/questions/2401012/…的副本。
  • @konidela:您已经问了 6 个问题,并且在最初的帖子之外从未参与过。请单击您喜欢的答案旁边的复选标记,或者以某种方式向我们表明您正在听……
  • 我实现了离散曲线演化,如果你需要告诉我。

标签: c++ algorithm opencv computer-vision


【解决方案1】:

离散曲线演化是一种从凹曲线计算处处凸曲线的算法。它以离散的步骤沿其法线向外移动曲线的凹面部分,直到消除所有凹面。它不是遗传算法,进化一词是指随着时间的推移“进化”曲线的位置。

在网上搜索了很长一段时间后,最好的来源在这里: https://cis.temple.edu/~latecki/Software/Evo.zip

这是 matlab 代码,所以它不是您想要的,但您有三个不错的选择:

  1. 将其移植到 C++(只要不使用矩阵基元,通常不会对 matlab 造成困难。)
  2. 包装 matlab 代码,以便您可以从 C 中调用它(matlab 提供了执行此操作的库)
  3. 将其编译为可执行文件并从 C 中调用(matlab 也允许这样做)

选项 2 将要求任何想要运行它的人在他们的计算机上拥有 matlab 动态库的副本,这可能是不可取的。我猜选项 3 也需要这个,但我只有选项 1 和 2 的经验。将 matlab 移植到 c++ 通常还不错;这取决于代码使用了多少矩阵基元和矩阵运算,这些矩阵在 matlab 中易于使用而在 C++ 中难以使用(因为它们不是内置的)。不过,我还是建议您尝试一下旧学院!

如果您只是在寻找 DCE,请查看文件 evolution.m。这就是实现 DCE 的功能。由此而来的全骨架剪枝算法只能在高层次上简单描述。各个步骤和部分非常复杂,DCE 只是其中的一小部分。

希望这会有所帮助!我将自己处理这段代码,所以如果我最终在 C++ 中以某种可能对你有帮助的方式使用它,我会告诉你的。

【讨论】:

  • 恐怕链接已经过时了。你能找到更新的版本吗?
【解决方案2】:

我不确定你所说的离散曲线进化算法是什么意思,但如果你指的是符号回归算法,你可以从阅读符号回归(或一般的遗传编程)开始:

http://en.wikipedia.org/wiki/Symbolic_Regression

还有一些不错的现有程序。 Eureqa 有一个开放的 API:

http://code.google.com/p/eureqa-api/

【讨论】:

    猜你喜欢
    • 2017-04-05
    • 1970-01-01
    • 2013-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-26
    • 1970-01-01
    • 2023-03-14
    相关资源
    最近更新 更多