三维点云处理
Kadima°
行至水穷处,坐看云起时
展开
-
三维点云处理08-KDTree
三维点云处理08-KDTreeresult_set.pyimport copy# distance-index类class DistIndex: def __init__(self,distance,index): self.distance = distance self.index = index def __lt__(self,other): return self.distance < other.distance# 创建用来存放KNN结果的集合原创 2021-06-02 20:33:25 · 375 阅读 · 0 评论 -
三维点云处理-NMS代码实现
三维点云处理-NMS代码实现import numpy as npdef nms(dets,thresh): ''' Python实现NMS 输入:dets:[x1,y1,x2,y2,scores],分别为检测框的左上方和右下方角点坐标,以及对应的置信度得分 thresh:IoU阈值,大于该阈值时会被去除 ''' # 分别获取检测框的角点坐标和置信度得分 x1 = dets[:,0] y1 = dets[:,1] x2 = dets[:,2] y2 =原创 2021-05-31 11:04:20 · 971 阅读 · 1 评论 -
三维点云处理07-二叉树
三维点云处理07-创建二叉树python实现二叉树的构建import numpy as np# 节点定义class Node: def __init__(self, key, value = -1): self.left = None self.right = None self.key = key self.value = value # 递归创建二叉树 def insert(root, key ,value): if root is None: root = No原创 2021-05-28 10:01:14 · 206 阅读 · 0 评论 -
三维点云处理06-2D/3DIoU计算
三维点云处理06-IoU计算IoU定义:预测边框与真是边框的交集与并集之比首先说明IoU的计算并不需要像下图所示对各种情况进行分类后,再进行计算IoU的计算本质上是集合交集的计算,首先从一维IoU的计算开始,然后扩展到二维等等一维IoU计算首先看上图右侧一维IoU的计算,IoU的计算本质就是集合上下边界的计算 1.计算交集的下界:max(x1,y1) 2.计算交集的下界:min(x2,y2) 3.判断交集是否真是存在:上界-下界: min(x2,y2) - max(x1,原创 2021-05-24 11:13:10 · 3785 阅读 · 0 评论 -
三维点云处理05-FPS代码实现
三维点云处理-FPS代码实现基础知识点最远点采样原理解释:1.从原始点云中选取一个初始点作为最远点2.设定我们希望获得的最远点的数量npoints3.进行npoints次循4.每次循环中计算原点点云中每个点到距离它最近的最远点的距离5.然后从中选出距离最大的点作为下一个最远点上图解释:1.首先从原始点云中选择一个点作为初始点2.然后计算原始点云中所有点到该初识最远点的距离,获得第二个最远点3.然后计算原始点云中所有点到第二个最远点的距离,并与第一个最远点的距离进行比较,使用距离较小原创 2021-05-15 22:55:58 · 739 阅读 · 0 评论 -
三维点云处理04-Voxel Grid Filter代码实现
三维点云处理-Voxel Grid Filter代码实现基础知识点1.首先获得输入点云在各维度上的最大,最小值2.设定leaf_size的大小3.根据leaf_size的大小计算每个维度上栅格的数量D_x, D_y, D_z4.对于输入点云中的每个点计算其i_x, i_y, i_z5.由idx = i_x + i_y * D_x + i_z * D_y * D_x获得每个点所属栅格的idx代码实现import osimport numpy as npfrom pyntcloud imp原创 2021-05-15 19:13:09 · 1294 阅读 · 0 评论 -
三维点云处理03-Radius Outlier Remove代码实现
三维点云处理-Radius Outlier Remove代码实现半径滤波思想 设定一个固定的半径范围,对每个点在该半径范围内查找最近点,并设定最近点最低数量阈值, 如果某个点在该半径范围内的最近点的数量小于该最低数量阈值,则认为该点为离群点,去除代码实现import osimport numpy as npimport open3d as o3dfrom pyntcloud import PyntClouddef radius_outlier_remove(pcd,dis,k):原创 2021-05-14 23:09:39 · 963 阅读 · 1 评论 -
open3d-KDTree使用
open3d-KDTree使用从PCD文件中读取点云并建立KDTree#读取pcd文件pcd = o3d.io.read_point_cloud("../../TestData/Feature/cloud_bin_0.pcd")#将点云颜色设为相同pcd.paint_uniform_color([0.5,0.5,0.5])#建立KDTreepcd_tree = o3d.geometry.KDTreeFlann(pcd)KNN最近邻搜索def search_knn_vector_3d(pc原创 2021-05-14 22:36:53 · 880 阅读 · 0 评论 -
三维点云处理02-surface_normal代码实现
三维点云处理-surface_normal代码实现基础知识点surface_normal是PCA的应用,基础知识点与PCA相同,可以查看PCA代码实现#!/usr/bin/python3import osimport numpy as npfrom pyntcloud import PyntClouddef PCA(data,sort=True): ''' PCA函数实现: 输入: data:点云数据 sort:是否排序 输出: w:特征值 v:特征向量 '''原创 2021-05-14 22:03:32 · 764 阅读 · 1 评论 -
三维点云处理01-PCA代码实现
三维点云处理-PCA代码实现基础知识点1.特征值与特征向量的意义2.方阵的特征值分解(nxn)3.一般矩阵的特征值分解(mxn)——SVD 分解4.谱定理5.瑞立熵代码实现#!/usr/bin/python3import osimport numpy as npfrom pyntcloud import PyntClouddef PCA(data,sort=True): ''' PCA函数实现: 输入: data:点云数据 sort:是否排序 输出: w:特征值原创 2021-05-14 21:29:39 · 872 阅读 · 0 评论