首页 > 编程语言 >使用Python写简单的点云SUSAN关键点检测

使用Python写简单的点云SUSAN关键点检测

时间:2024-04-05 13:04:26浏览次数:13  
标签:SUSAN Python indices points radius neighbor 点云 np response

一、代码

Python

import numpy as np
import open3d as o3d
from scipy.spatial import cKDTree
from joblib import Parallel, delayed


def calculate_response(idx, points, radius, t, kdtree):
    # 使用KD树找到半径内的所有点
    neighbor_indices = kdtree.query_ball_point(points[idx], radius)
    neighbor_points = points[neighbor_indices]

    # 计算距离
    distances = np.linalg.norm(neighbor_points - points[idx], axis=1)

    # 计算响应值
    response = np.sum(distances < t) / len(neighbor_indices)
    return response if response > 0 else 0, idx


def susan_keypoint_detection_optimized(pcd, radius=0.05, t=0.01, response_threshold=0.5, n_jobs=-1):
    points = np.asarray(pcd.points)
    kdtree = cKDTree(points)

    # 并行计算每个点的响应值
    results = Parallel(n_jobs=n_jobs)(
        delayed(calculate_response)(i, points, radius, t, kdtree) for i in range(len(points))
    )

    # 分离响应值和索引
    responses, indices &

标签:SUSAN,Python,indices,points,radius,neighbor,点云,np,response
From: https://blog.csdn.net/qq_58060770/article/details/137397505

相关文章

  • 归并排序 返回逆序数 python
    defmerge_sort_and_count_inversions(arr):n=len(arr)ifn<=1:returnarr,0#如果n小于等于1,数组已经有序,直接返回数组本身和逆序数0mid=n//2left_lst,inv_left=merge_sort_and_count_inversions(arr[:mid])#对左半部分进行递......
  • python 插值搜索-迭代与递归(Interpolation Search)
             给定一个由n个均匀分布值arr[]组成的排序数组,编写一个函数来搜索数组中的特定元素x。         线性搜索需要O(n)时间找到元素,跳转搜索需要O(?n)时间,二分搜索需要O(logn)时间。插值搜索是对实例二分搜索的改进,其中排序数组中的值是......
  • Python自学:类 构造方法练习(思路打不通,还遇到赋值错乱!)
    开始学习类一个练习,就是输入学生信息,并且要用到forinput结合,构造方法等。自己思考时,这个应该先设计一个类,然后用input输入,之前练习过main架构 tools调用两个py文件相互辅助,这个是不是也是,还有全局变量,想了很多结果不是,乱的。看了课件,用到forxinrange(1,11):开......
  • Python基础
    本人以前学习python基础时的两个简单实战1.模拟网上购物流程#创建空的购物车list=[]foriinrange(5):goods=input("请输入对应的商品编号和商品名称入库,每次只能输入一个产品:")list.append(goods)foriteminlist:print(item)#创建一个空列表,购物车......
  • Python线程池的概念涉及创建一个线程集合(即线程池)
    Python线程池的概念涉及创建一个线程集合(即线程池),这些线程预先被初始化并保存在内存中,等待任务的分配和执行。使用线程池可以有效地管理和复用线程资源,提高程序的执行效率。以下是Python线程池相关的概念及其示例程序:1.线程池(ThreadPool)线程池是一个管理线程的集合,它负责线......
  • LeetCode in Python 88. Merge Sorted Array (合并两个有序数组)
    合并有序数组也有两种方法,区别是空间复杂度不同。第一种,重新开辟一个数组空间,大小为O(m+n),另外需要三个指针分别指向两个有序数组和新开辟的数组,依次判断两个数组内元素大小,不断更新指针即可。第二种,无需单独开辟空间,在第一个数组(该数组空间足够存放两个数组总长的数据)内进行......
  • nodejs+python开发基于uniapp的校园跑腿系统 微信小程序
    本文先提出了开发基于uniapp的高校校园跑腿系统的背景意义,然后通过功能性和非功能性分析阐述本系统的需求,然后从功能设计和数据库设计两方面进行系统的设计建模。在技术实现部分采用了nodejs作为开发后台的编程语言,客户端使用uniapp,数据库选择MySQL。最后进行了代码的编写,并说......
  • 【python毕业设计】社区居民健康档案管理系统8cgo7
    典型的应用系统中还需要系统维护这一功能,其主要包括:(1)可以完成社区居民家庭和个人基本信息的维护和查询功能。(2)可以完成社区居民健康档案管理系统用户的添加、删除、修改等功能。(3)可以完成用户组的维护和用户组的查询功能。(4)可以完成数据备份和恢复的功能。(5)可以完成......
  • python3.12.2银河麒麟v10鲲鹏离线快速部署
    python3.12.2银河麒麟v10鲲鹏离线快速部署背景清明假期忙活了一整天发现自己方向走错了.部署效率巨慢无比.其实简单情况下很快就可以弄好.自己最开始使用python3.9使用的是libressl发现最新版已经不需要了.并且使用仓库中的就可以.系统版本说明公司的银河麒麟v10......
  • Python进阶:使用requests库轻松发送HTTP请求并获取响应
    Python进阶:使用requests库轻松发送HTTP请求并获取响应简介:本文将带您深入了解Python中强大的requests库,学会如何使用它发送各种HTTP请求,并轻松获取响应内容。无论您是初学者还是有一定经验的Python开发者,本文都将为您提供实用、详细的指导,助您在网络请求与响应的处理上更上......