问题:
我有一张从谷歌的静态地图 api 下载的图像。我使用这张图片基本上创建了一个用户点击的“魔杖”类型的功能。对于那些感兴趣的人,我正在使用图形切割算法来查找用户单击的形状。然后,我使用轮廓跟踪找到代表此形状边界的所有点(borderPoints)。
我的目标:
拉直线条(如果可能)并尽量减少边界点的数量(尽可能)。我目前的用例是房屋的屋顶,所以在大多数情况下,我希望我能找到角落并将它们用作边界点,而不是中间的所有不同点。但是由于像素线凹凸不平,我无法弄清楚如何找到这些角落。
我的解决方案尝试:
一种简单的技术是循环检查之前的点、当前点和之后的点。如果之前的点和之后的点具有相同的 x 或相同的 y,则可以删除当前点。这会稍微减少点数,但没有我想要的那么多。
我还尝试查看之前和之后的点,看看如果当前点不在某个斜率范围内,是否可以删除它,但收效甚微,因为偶尔会删除一个关键角点,因为图像有点模糊,而且角落有略微圆润的点。
我的问题:
有没有做这种事情的算法?如果是这样,它(他们)叫什么?如果没有,关于如何以编程方式解决这个问题的任何想法?