3.多边形曲线简化之Douglas-Peucker算法

本文详细介绍了Douglas-Peucker算法,一种用于减少表示多边形曲线所需点数的经典算法,通过递归地分割曲线并计算中间点到直线的最大距离来实现曲线简化。

Douglas-Peucker算法

        根据具体情况,减少表示多边形曲线的点,可以减少内存,同时对曲线进行操作的时间。这里介绍经典的Douglas–Peucker算法,相关文献:Algorithms for the reduction of the number of points
required to represent a digitized line or its caricature(下载链接)。看完论文,算法的基本思想总结如下:
将曲线的第一个点(作为anchor)和最后一个点(作为floater)连成一条直线,计算所有中间点到该直线的最大距离Dmax。
如果Dmax<D(预先设置的阈值),则该段只保留第一个和最后一个点,该段处理结束;反之,用Dmax对应的中间点将曲线分为两段,对这两段重复第一步和第二步。
直到递归结束后,将保留的点依次连接,组成简化后的曲线。
在这里插入图片描述
        我们常说的Douglas-Peucker算法就是论文中的Method 2,论文中还介绍了Method1。Method 2的点数会比 Method 1多一点,同时运行时间时间只有Method 1的5%左右,所以Method 1很少用。下面将简单介绍下论文中Method 1。

  1. 将曲线的第一个点(作为anchor)和最后一个点(作为floater)连成一条直线,计算中间所有点到该直线的最大距离Dmax。
  2. 如果Dmax
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值