点云下采样是对点云以一定的采样规则重新进行采样,目的是在保证点云整体几何特征不变的情况下,降低点云的密度,进而可以降低相关处理的数据量和算法复杂度。上一节介绍了体素下采样的方法https://blog.csdn.net/suiyingy/article/details/124458903。本节将介绍均匀下采样和随机下采样。最远点采样等方法后续会在深度学习章节中进行详细介绍。
均匀采样是指每隔固定的点数采样一次。样本按点的顺序执行,始终选择从第 1 个点开始,而不是随机选择。显然点存储的顺序不同,得到的结果也会不一样。从这个角度来看,这种方法比较适合有序点云的降采样。这种方法适合均匀采集到的点云,如果点云本身不均匀,那么以固定点数采样很有可能造成某一部分的点云没被采样到。相比于体素的采样方法,点云均匀采样后的点数是固定可控的,而体素采样后的点云数量是不可控的。
open3d中的均匀采样函数为uniform_down_sample。
pcd.uniform_down_sample(100)#每隔100个点采样一次
顾名思义,随机下采样就似乎在原始点云中随机采样一定点数的点。这种方法最终得到的点云数量也是固定的。
open3d中的随机采样函数为random_down_sample,其参数是采样后点云数量相对于原始点云数量的比例。
pcd = pcd.random_down_sample(0.1)#采样1/10的点
除open3d的方法外,也可以自己自定义随机采样的方式,这样会更加灵活。
points = np.array(pcd.points)
n = np.random.choice(len(points), 500, replace=False) #s随机采500个数据,这种随机方式也可以自己定义
pcd.points = o3d.utility.Vector3dVector(points[n])
pcd文件请参考:pcd格式点云样例文件-深度学习文档类资源-CSDN下载。
# -*- coding: utf-8 -*-
"""
乐乐感知学堂公众号
@author: https://blog.csdn.net/suiyingy
"""
import open3d as o3d
from copy import deepcopy
import numpy as np
if __name__ == '__main__':
file_path = 'rabbit.pcd'
pcd = o3d.io.read_point_cloud(file_path)
pcd.paint_uniform_color([0.5, 0.5, 0.5])#指定显示为灰色
print(pcd)
pcd1 = deepcopy(pcd)
pcd1.paint_uniform_color([0, 0, 1])#指定显示为蓝色
pcd1.translate((20, 0, 0)) #整体进行x轴方向平移
pcd1 = pcd1.uniform_down_sample(100)#每100个点采样一次
print(pcd1)
pcd2 = deepcopy(pcd)
pcd2.paint_uniform_color([0, 1, 0])#指定显示为绿色
pcd2.translate((0, 20, 0)) #整体进行y轴方向平移
pcd2 = pcd2.random_down_sample(0.1)#采1/10的点云
print(pcd2)
#自定义随机采样
pcd3 = deepcopy(pcd)
pcd3.translate((-20, 0, 0)) #整体进行x轴方向平移
points = np.array(pcd3.points)
n = np.random.choice(len(points), 500, replace=False) #s随机采500个数据,这种随机方式也可以自己定义
pcd3.points = o3d.utility.Vector3dVector(points[n])
pcd3.paint_uniform_color([1, 0, 0])#指定显示为红色
print(pcd3)
# # 点云显示
o3d.visualization.draw_geometries([pcd, pcd1, pcd2, pcd3], #点云列表
window_name="均匀随机采样",
point_show_normal=False,
width=800, # 窗口宽度
height=600) # 窗口高度
灰色图片为原始点云,蓝色为open3d均匀下采样结果,绿色为open3d随机下采样结果,红色为自定义随机下采样结果。
python三维点云从基础到深度学习_Coding的叶子的博客-CSDN博客_3d点云 python从三维基础知识到深度学习,将按照以下目录持续进行更新。https://blog.csdn.net/suiyingy/article/details/124017716
更多三维、二维感知算法和金融量化分析算法请关注“乐乐感知学堂”微信公众号,并将持续进行更新。