点云等比例归一化

由于项目需要,故将采集到的点云数据进行归一化,原始的点云数据为*.xyz格式,即只包含每个点的x、y、z三维空间坐标。这里进行的是等比例归一化,将z坐标归一化到 [ -0.5 , 0.5 ] 区间,x 和y坐标归一化到等比例区间。

import numpy as np

#将.xyz文件中的数据加载为Numpy数组
def load_xyz(file_path):
    with open(file_path, 'r') as f:
        data = []
        for line in f:
            x, y, z = map(float, line.split())
            data.append([x, y, z])
    return np.array(data)

#保存*.xyz文件
def save_xyz(file_path, data):
    with open(file_path, 'w') as f:
        for point in data:
            f.write(' '.join(map(str, point)) + '\n')

#加载原始*.xyz文件
data = load_xyz('input/path')

#获取坐标的最大最小值
x_min, x_max = data[:,0].min(), data[:,0].max()
y_min, y_max = data[:,1].min(), data[:,1].max()
z_min, z_max = data[:,2].min(), data[:,2].max()

#计算差距
x_range = x_max - x_min
y_range = y_max - y_min
z_range = z_max - z_min

#进行归一化
data_norm = np.copy(data)
data_norm[:,0] = ((data[:,0] - x_min) / x_range - 0.5) * x_range / z_range
data_norm[:,1] = ((data[:,1] - y_min) / y_range - 0.5) * y_range / z_range
data_norm[:,2] = (data[:,2] - z_min) / z_range - 0.5

#保存归一化后的数据
save_xyz('output/path', data_norm)

  • 6
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值