python :alpha shapes 算法检测边界点

alpha shape 算法识别

def alpha_shape_2D(data, radius):
    """
    alpha shapes 算法检测边缘
    :param x: 原始点坐标集 x轴
    :param y: 原始点坐标集 y轴
    :param radius: 圆半径
    :return: 边缘点集
    """

    x = data.x
    y = data.y
    count = len(x)
    i = 0
    temp_i = i
    edge_x = []
    edge_y = []
    edge_len = 0

    while (i < count):  # 遍历点集里的所有的点
        # 根据农机作业轨迹的特性(有一定规律的,一列一列的排列)
        # 筛选 以当前点为质心,边长为 4*radius 的正方形区域 内的点 ,计算这些点与当前点的连线是否构成边界
        i_range = np.array([t for t, v in enumerate(x < x[i] + 2 * radius) if v == True])
        i_range = i_range[[t for t, v in enumerate(data.loc[i_range, 'x'] > x[i] - 2 * radius) if v == True]]
        i_range = i_range[[t for t, v in enumerate(data.loc[i_range, 'y'] < y[i] + 2 * radius) if v == True]]
        i_range = i_range[[t for t, v in enumerate(data.loc[i_range, 'y'] > y[i] - 2 * radius) if v == True]]

        """ i_range 是可能与当前点的连线组成边界线的备选点集"""
        for k in i_range:
            # 避免重复选点(一个点不能组成三个边界线,最多只能组成两条边界)
            if edge_x.count(x[k]) > 0 and edge_y.count(y[k]) > 0:
                continue

            # 计算 当前点 与 备选点 的距离
            dis = distance((x[i], y
  • 26
    点赞
  • 69
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
Alpha shape算法,又称为滚球法,是一种用于提取边界点算法。与传统的凸壳提取方法相比,Alpha shape算法可以处理凹包情况,并在处理多个点云时能够勾勒出多个边界线。这是它的优势之一。 该算法的原理如下:以一个半径为&alpha;的圆在点集P外滚动,当&alpha;足够大时,这个圆就不会滚到点集内部,其滚动的痕迹就是点集P的边界线。因此,当&alpha;值足够小时,接近于0时,点集P中的每一个点都是边界点;而当&alpha;值足够大时,趋向于无穷时,Alpha Shapes(&alpha;→∞)是点集P的凸包。当点集P中的点密度比较均匀,且&alpha;取适当的值时,Alpha Shapes可以同时提取出点集P的内外边界。 尽管研究Alpha shape算法的博文数量不多,但已经有相当数量的研究。然而,给出的算法大多存在错误,或者只是部分实现。因此,有必要重新梳理算法原理。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [平面点云的轮廓线计算-alpha shapes算法原理和实现](https://blog.csdn.net/zjjsd195/article/details/122390210)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [隧道点云处理(一):投影边界提取 (Alpha Shapes)](https://blog.csdn.net/weixin_46098577/article/details/119787523)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值