PCL向点云添加均匀随机噪声:
#include <iostream>
#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>
#include <pcl/common/random.h>
int main()
{
// 加载点云文件
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>); //待滤波点云
pcl::io::loadPLYFile("horse.ply", *cloud);
// 设置随机数生成器
pcl::common::UniformGenerator<float> randGen(0.0f, 1.0f);
// 添加随机噪声
float noiseMagnitude = 0.01f; // 噪声幅度
for (pcl::PointXYZ& point : *cloud) {
point.x += noiseMagnitude * (randGen.run() - 0.5f);
point.y += noiseMagnitude * (randGen.run() - 0.5f);
point.z += noiseMagnitude * (randGen.run() - 0.5f);
}
// 保存带有噪声的点云文件
pcl::io::savePLYFile("cloud.ply", *cloud); //保存文件
return 0;
}