2017-08-09 65 views
2

有很多关于普通线简化互联网上的信息,增量线简化

https://www.jasondavies.com/simplify/

https://bost.ocks.org/mike/simplify/

http://geomalgorithms.com/a16-_decimate-1.html

http://mourner.github.io/simplify-js/

即当简化点已知前期。 Visvalingam的算法Douglas-Peucker算法,但是如果公差参数是固定的并且点不是预先知道的。我有很多要点,我不想运行N * Log(N)算法M千次,而是希望它能够递增地处理我的集合,交集并不重要,重点只是减少具有最小视觉影响的数据集的大小是否有一些聪明的方法来解决这个问题?

回答

0

如果交叉点不重要,并且所有您需要的是视觉相似性(大概在光栅化之后并且接近像素大小),则只需丢弃足够接近缩小链的点就可以完成这项工作。

在伪代码:

Let C be the original chain 
Let R be the reduced chain (initially empty) 

Add the first point of C to R 
For every subsequent point p of C: 
    If distance(p, the last point of R) >= ε: 
     Add p to R 

什么这种方法保证:

  • 每一段在降低链的长度将是至少ε
  • 链将在之间的Hausdorff距离大多数ε

有什么不保证:

  • 自交差的缺席
  • 任何一种最优的(有可能是一个不同的链,其是在豪斯多夫距离的点数都更紧密和更小)