道格拉斯-普克 Douglas-Peuker抽稀算法

本文介绍Douglas-Peucker抽稀算法,该算法用于曲线简化,通过比较点到最近边的最大投影距离与预设阈值来决定是否保留该点。当点的最大投影距离大于阈值时,继续对子区间进行二分处理;反之,舍弃中间点,仅保留首尾点。算法的简化程度与阈值相关,阈值越大,简化程度越高。
摘要由CSDN通过智能技术生成
道格拉斯-普克抽稀算法,是用来对大量冗余的图形数据点进行压缩以提取必要的数据点。
该算法实现抽稀的过程是:
1)对曲线的首末点虚连一条直线,求曲线上所有点与直线的距离,并找出最大距离值dmax,用dmax与事先给定的阈值D相比: 
2)若dmax<D,则将这条曲线上的中间点全部舍去;则该直线段作为曲线的近似,该段曲线处理完毕。 
  若dmax≥D,保留dmax对应的坐标点,并以该点为界,把曲线分为两部分,对这两部分重复使用该方法,即重复1),2)步,直到所有dmax均<D,即完成对曲线的抽稀。 

显然,本算法的抽稀精度也与阈值相关,阈值越大,简化程度越大,点减少的越多,反之,化简程度越低,点保留的越多,形状也越趋于原曲线。 

bool SimplifyCurve(CurveVertexes &prevPts, CurveVertexes &nextPts, double tolerance)
{
 // Exception
 if(!prevPts.size() || tolerance < 0.)
 {
  return false;
 }
 nextPts.clear();

 // Initialization
 int ptSize = prevPts.size();
 SimpStack stack(ptSize);

 // Loop until two vertex meet with ...
 while(stack.m_curO

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值