matlab 凹包,二维点集凹包算法介绍

最近遇到一个求二维点集凹包的问题,凹包的叫法不知道是否准确,问题可以描述为:(原文下载在文章末尾)

在二维平面上有一系列的点,求能包围所有点集的二维多边形。(好像搜“离散点边界”或“点云边界提取”比凹包更准确)

这个很容易想起二维凸包问题,目前已经有很多算法实现点集的凸包,凸包:https://en.wikipedia.org/wiki/Convex_hull ,这里不再赘述。

主要介绍二维点集凹包的一些算法,这里只做大致介绍,不做详细叙述。

通过网上查找资料,网址http://www.tuicool.com/articles/iUvMjm

介绍了计算凹包的3中方法,且在github上有源码下载链接,感兴趣的可以下载测试。

基于Delaunay三角化,如左图,先将所有的点进行Delaunay三角化,然后删掉太长的边得到点集的凹包。

--1.png

滚边法(Edge Pivoting),先找到一个凸点作为起始点,一般取y最小的点,顺时针查询距离其几何距离在R内的所有点,即求所谓的 R邻域 ,对R邻域的点集进行排序,再在领域中一个点作为连接点,再以此点作为起始点求R邻域。但是这个算法作者实现的并不是很稳定,总是出现一条单边,而不是多边形,但是还是要感谢作者无私奉献源码。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值