Javascript “检测”;凹面船体“;论地图影像

Javascript “检测”;凹面船体“;论地图影像,javascript,algorithm,image-processing,convex-hull,concave-hull,Javascript,Algorithm,Image Processing,Convex Hull,Concave Hull,我正在为Waze开发开源JavaScript插件,Waze是著名的免费GPS导航器,专门针对。这个用户脚本的想法是使快速选择大型统一颜色的地图区域成为可能,从而将它们转换为地标 到目前为止,我已经有了一个在Photoshop等图形编辑器中被称为“魔杖”的工具:用户点击地图上的某个地方(比如说,在湖泊或森林上),脚本选择相同颜色覆盖的整个区域,并为地标创建一个多边形 一切都很好,除了我使用凸包算法来获得。。。好。。。凸包:)即:连接找到的点云的最外部点的多边形 但正如大家所理解的,只有少数地标

我正在为Waze开发开源JavaScript插件,Waze是著名的免费GPS导航器,专门针对。这个用户脚本的想法是使快速选择大型统一颜色的地图区域成为可能,从而将它们转换为地标

到目前为止,我已经有了一个在Photoshop等图形编辑器中被称为“魔杖”的工具:用户点击地图上的某个地方(比如说,在湖泊或森林上),脚本选择相同颜色覆盖的整个区域,并为地标创建一个多边形

一切都很好,除了我使用凸包算法来获得。。。好。。。凸包:)即:连接找到的点云的最外部点的多边形

但正如大家所理解的,只有少数地标具有凸面形状,而大多数真实世界对象具有带凹面区域的多段线形状。在上面的图片上,你可以看到这个区域几乎没有锐利的边缘,在右下角有一片农田,被凸面外壳覆盖着——这是错误的

我在谷歌上搜索合适的算法,翻阅数学试卷,但还是没找到。关于Stackoverflow上的凹面外壳指的是Alpha形状和Delaunay三角形。虽然我不知道如何在这种情况下使用它:所有点相互连接,形成一条连续的多段线,因此,我似乎找不到合适的alpha半径,因为即使是半径等于1像素且alpha曝光的圆


任何想法如何存档的目标,建设一个凹面船体将不胜感激!可能是我走错了方向,需要查看位图矢量化算法?

Alpha形状是通过查找一组点的delaunay三角剖分,然后删除超过Alpha的边来定义的。需要delaunay三角剖分,但不需要圆。它也适用于线条。要使用JS计算形状,可以使用TopoJSON或尝试以下答案:。你们也可以试试我的php软件包。

你们可以阅读本文中如何实现凹壳算法。基本思想是构建凸面外壳和向内弯曲(凹面)边。
这个算法有一个JavaScript实现:。

可以部分解决问题,但是我应该如何处理内部区域?我应该如何检测外部边缘?有一个答案:。当你读到关于凹面delaunay三角剖分的文章时,它没有说比较角度。它讲的是字母形状。想详细说明一下吗?我错过了吗?