【发布时间】:2012-11-27 03:00:26
【问题描述】:
我正在尝试研究一种将一种“形状”变形为另一种“形状”的算法。这两种形状都是任意的,甚至可能还有更小、不连贯的形状。
到目前为止,我的基本想法如下:定位形状的边缘,沿这些边缘放置点,然后对目标图像执行相同操作,然后将点移动到它们的目标。
这是一个插图:
我只是不知道从哪里开始。上图是简化图,实际用例具有更复杂的形状/轮廓。我的主要问题是:如何处理不相交的形状?我能想到的最好的办法是找出两部分之间的最近点,并将它们连接在一起作为路径的一部分。但是我该如何实现呢?
我还没有任何代码,我仍处于计划阶段。我想我要问的是是否有人可以将我链接到任何可能有帮助的资源,或提供任何指示。搜索谷歌已经产生了一些有趣的变形算法,但它们都处理完整的图像,并涉及将图像分解成碎片以重塑它们,这不是我想要的。
请注意,这将在 JavaScript 中使用,但如果更简单,可以在 PHP 中预先计算。
【问题讨论】:
-
可以为此安装第三方 PHP 扩展吗?有了 OpenCV it seem to be pretty straightforward 之后。
-
我宁愿不必为了使用其中一个功能而获得整个扩展。有没有办法将该特定功能移植到 PHP 或 JavaScript?
-
我想通过大量工作和 emscripten 它可以“移植”,还有其他部分 opencv 端口,如实现 findContours 的 js-aruco,但这个项目似乎被放弃了,但是它包含在 simplecv-js 项目中,该项目有其他相关的好东西(比如在 pixastic 中进行边缘检测以替代缺失的 canny)。
-
How do I handle disjoint shapes?是什么意思你实现了标准形状吗?您的预期输出不清楚 -
这绝对是矢量图的工作,而不是位图。在 Javascript 中的浏览器中将比在 PHP 中容易得多,因为浏览器内置了对矢量图形的支持。像 Raphael 这样的库会使其相对简单。
标签: php javascript image-manipulation