【发布时间】:2011-12-12 13:11:26
【问题描述】:
我正在开发一个 html 地图制作工具,我希望让我们的用户能够通过单击区域来快速创建形状,而不是让他们手动定义形状。
首先让我们看看我们目前正在做什么。用户想要映射区域 A。他要做的就是在每个点上多次单击以定义形状的边界。
我想知道是否有一种算法允许用户在 A 区域中单击并可以确定要处理的点,以便在形状边界之后创建接近最佳的形状 - 基于图像对比度。
我处理这个问题的第一个想法是确定从单击点向上、向左、向下、向右最远的点。将这四个点作为我们的起点。然后对于每个段,用一个新点细分它,并沿着向量法线移动新点,直到我碰到一个对比边缘。
当然,这种方法有一些限制,但这是我可以假设的
- 形状可以是凸面、凹面等...
- 对比度应该是黑白对比,但为了处理可能的变化,对比度阈值应该是可配置的。
- 在上面我一直在考虑的示例中,细分深度显然会受到限制,以免杀死用户机器
如果你们中有人知道这样的算法,那就太好了。
【问题讨论】:
-
每个节点的连接线是否已知?如果是,是否可以将它们导航到下一个节点,即使它位于一侧的一半(如第三个图像中的第二个点)?如果是这样,您可以使用“保持左”或“保持右”的路由样式来找到最里面的连接形状。
-
实际上目标是确定节点以创建折线。我正在编辑问题标题以使其更清晰
-
对不起,我假设图像是基于矢量的。事实上,它是位图吗?
-
我想这需要将图像转换为画布才能读取像素的颜色。也许您可以添加“画布”标签以吸引画布大师对这个问题的关注;)
-
首先地图是如何表示的?有什么阻止您编译服务器中所有可能的区域并将处理后的数据发送到客户端吗?
标签: javascript algorithm image-processing canvas